将经常在Ansible中使用的命令写入makefile中
这篇文章是Ansible Advent Calendar 2017第6天的文章。
在使用Ansible的项目中,公开了经常编写的Makefile。样例仓库如下:
yyoshiki41/ansible-makefile
生成文件
$ make help
Make command examples for Ansible
ls-hostname to show all host ips
syntax-check to run with --syntax-check option
lint to lint playbook files
galaxy-install to install roles using ansible-galaxy
vault-dec to decrypt secret.yml
vault-enc to encrypt secret.yml
vault-edit to edit secret.yml
vault-view to view secret.yml
■ 列出主机名称
为了快速确认命令是否能够成功连接到主机,我想先进行简单的测试。
$ ansible all -i hosts -m shell -a "hostname;"
■ 语法检查
暂时将 这个ansible-playbook命令附加的–syntax-check选项,用来确认是否有错误。
对于我自己来说,我已经将其放在了CI中。
$ ansible-playbook playbook_dir/*.yml -i hosts --syntax-check
■ 绒球
在不太注重格式的团队中,ansible-lint可能是不必要的。
$ ansible-lint playbook_dir/*.yml
■ 宇宙安装
在中国翻译:Ansible Galaxy 中的角色安装别名。请参考官方指南了解 requirements.yml 文件的编写方式。
$ ansible-galaxy install -r ./roles/requirements.yml --roles-path ./roles
■ 保险库编码 / 保险库解码
请将ansible-vault encrypt/decrypt时的别名设置为vault-password。您可以根据环境的需要,将文件路径作为选项传递,也可以改为使用ANSIBLE_VAULT_PASSWORD_FILE或交互式方式进行。
$ ansible-vault decrypt hosts/group_vars/secret.yml --vault-password-file ./.secret/vault_password
$ ansible-vault decrypt hosts/group_vars/secret.yml --vault-password-file ./.secret/vault_password
还可以选择 ansible-vault edit,ansible-view 或其他您喜欢的工具。
如果还有其他类似于这样设置在make中的,请务必告诉我!