Tacoscript library provides functionality for provisioning of remote servers and local machines running on any OS. Tacoscript can be installed as a binary therefore it doesn't require any additional tools or programs on the host system.
Tacoscript provisions host systems from simple yaml files written in a SaltStack driven configuration language.
Why we need another provisioning tool? Unfortunately the next competitors like Puppet, Ansible or Salt have a limited support for Windows or require installation of additional tools which is not always convenient.
Tacoscript is written in GO, so its provided as an executable binary for a big variety of host OS and platforms and it requires no additional tools to be installed in the host system. You can find the list of supported OS and architectures here.
Jump to our release page and download a binary for your host OS. Don't forget to download a corresponding md5 file as well.
# On MacOS
wget https://github.com/cloudradar-monitoring/tacoscript/releases/download/latest/tacoscript-latest-darwin-amd64.tar.gz
# On linux
wget https://github.com/cloudradar-monitoring/tacoscript/releases/download/latest/tacoscript-latest-linux-amd64.tar.gz
# On Windows
Just download https://github.com/cloudradar-monitoring/tacoscript/releases/download/latest/tacoscript-latest-windows-amd64.zip
Also download https://github.com/cloudradar-monitoring/tacoscript/releases/download/latest/tacoscript-latest-windows-amd64.zip.md5
Verify the checksum:
#On MacOS
curl -Ls https://github.com/cloudradar-monitoring/tacoscript/releases/download/latest/tacoscript-latest-darwin-amd64.tar.gz.md5 | sed 's:$: tacoscript-latest-darwin-amd64.tar.gz:' | md5sum -c
#On linux
curl -Ls https://github.com/cloudradar-monitoring/tacoscript/releases/download/latest/tacoscript-latest-linux-386.tar.gz.md5 | sed 's:$: tacoscript-latest-linux-amd64.tar.gz:' | md5sum -c
#On Windows assuming you're in the directory with the donwloaded file
CertUtil -hashfile tacoscript-latest-linux-amd64.tar.gz MD5
#The output will be :
MD5 hash of tacoscript-0.0.4pre-windows-amd64.zip:
7103fcda170a54fa39cf92fe816833d1
CertUtil: -hashfile command completed successfully.
#Compare the command output to the contents of file tacoscript-latest-windows-amd64.zip.md5 they should match
Note: if the checksums didn't match please don't continue the installation!
Unpack and install the tacoscript binary on your host machine
#On linux/MacOS
tar -xzvOf tacoscript-0.0.4pre-darwin-amd64.tar.gz >> /usr/local/bin/tacoscript
chmod +x /usr/local/bin/tacoscript
For Windows
Create a Tacoscript folder in C:\Program Files
Copy the tacoscript.exe binary to C:\Program Files\Tacoscript

Double click on the tacoscript.exe and allow it's execution:
go get github.com/cloudradar-monitoring/tacoscript
- Prepare a configuration script in the yaml format (see the Configuration section below), e.g.
tascoscript.yaml
On Linux/MacOS
The tacoscript binary expects a configuration file to be provided in the input, to execute script do:
/usr/local/bin/tacoscript tascoscript.yaml
You can also output the execution details with -v flag:
/usr/local/bin/tacoscript -v tascoscript.yaml
On Windows
-
Place the
tacoscript.yamlfile inC:\Program Files\Tacoscript\ -
Right-click on tacoscript.exe and create a shortcut with following properties:
Target:
C:\Windows\System32\cmd.exe /k tacoscript.exe -v tascoscript.yamlStart In:
C:\Program Files\Tacoscript\
- Click on the shortcut to execute the tacoscript.exe
The configuration file has yaml format. The file consists of a list of scripts which define a single desired state of the host system. A desired state can be an installed program or a file or a running service.
Here is the minimal possible tacoscript.yaml:
# unique id of the script, can be any string
create-file:
#task type which should be executed
cmd.run:
- name: touch /tmp/somefile.txt
We can read the script as:
We have a script with the name `create-file`. It has 1 task of type `cmd.run` which executes `touch /tmp/somefile.txt` command. The desired result of this script execution would be an empty file at `/tmp/somefile.txt`.
The tacoscript.yaml file contains a collection of scripts. Each script defines a desired state of the host system. You can add as many scripts as you want. The tacoscript binary will execute scripts from file sequentially. If any script failures, the program will stop the execution.
Each script contains a collection of tasks. Each task has a unique type id which identifies the kind of operation the task can do. Each task gets parameters list specified under it as input data. In the example above the task cmd.run receives parameter -name with value /tmp/somefile.txt and interprets it as a command which should be executed.
- to use shell pipes, redirects or glob expands, please specify a
shellparameter userparameter will require sudo rights for tacoscript, in Windows this parameter is ignored- if you use cmd.run tasks in Windows, you'd better specify the shell parameter as
cmd.exe, otherwise you will get errors like:exec: "xxx": executable file not found in %PATH% - the order of the scripts is not guaranteed. If you don't use the require values, the scripts will be executed in any order.
make test
-
Install golangci-lint using instructions from this site
-
Run the tool
make sca
make build
make build-win



