自动化利器 Ansible - 从了解到应用( 九 )

特殊标签
always除非--skip-tags选项指定,否则 always 标签的task会一直执行never除非--tags选项指定,否则 never 标签的task都不会执行tagged不包括never的所有标签untagged所有无标签和always标签all包括非never标签和无标签选项
# 如果执行 ansible-playbook 时不指定标签 , 则会执行所有非 never 标签的任务--tags "tag1,tag2..."执行指定标签和always标签的tasks--tags always只执行always标签的tasks--tags all执行所有非never标签和无标签的tasks--tags never执行always和never标签的tasks--tags tagged执行所有标签的tasks,但不包括never标签的tasks--tags untagged执行所有无标签和always标签的tasks--skip-tags "tag1,tag2..."跳过指定标签的tasks--list-tags查看playbook中哪些tags会被执行tags示例
tasks:- name: install packageyum: name={{ packagename }} state=latesttags:- always- name: copy configuration filecopy: src=https://www.huyubaike.com/root/conf/httpd.conf dest=/etc/httpd/conf/httpd.conftags: conf,http命令示例
ansible-playbook nginx_tags.yaml--tags "testtag,t2"Ansible Playbook 调试(Debug)

  • Print statements during execution
  • 在Ansible Playbook中常使用debug模块,可以在Playbook执行过程打印调试信息
  • 结合when条件语句一起使用时,可以调试特定条件下的执行过程
注意:在setup模块中查询出来的变量,直接可以在debug中直接作为变量引用 。
# msg输出自定义信息,如果不指定或不写msg的话,默认也会输出“null”# var- 指定要打印的变量名 , 与msg参数互斥,二者只能有一个- var参数中的变量不需要使用{{}}表达式,而msg中需要# verbosity- debug的调试级别,默认0是全部显示 , 级别调整到3是忽略内容不显示- 在命令中使用-vvv参数 , 可以在设置为3情况下仍然显示debug内容示例
tasks:- name: Host run this taskdebug: 'msg="{{ ansible_fqdn }} and {{ ansible_default_ipv4.address }}"'# 打印必要信息when: ansible_memtotal_mb < 500 and ansible_processor_cores == 2# 结合when使用- name: all host run this taskshell: hostnameregister: info- name: Hostname is webserver01 Machie run this taskdebug: 'msg="{{ ansible_fqdn }}"'when: info['stdout'].startswith('Success')- name: Show debug infodebug: var=info verbosity=1# 打印var变量信息,调试级别为1Ansilbe 加密解密ansible-vault 用途
  • encryption/decryption utility for Ansible data files
  • 主要应用于包含敏感信息的场景,可以加密和解密敏感信息
  • See 'ansible-vault--help' for more information on a specific command.
# ansible-vault -husage: ansible-vault [-h] [--version] [-v]{create,decrypt,edit,view,encrypt,encrypt_string,rekey}...encryption/decryption utility for Ansible data filespositional arguments:{create,decrypt,edit,view,encrypt,encrypt_string,rekey}createCreate new vault encrypted filedecryptDecrypt vault encrypted fileeditEdit vault encrypted fileviewView vault encrypted fileencryptEncrypt YAML fileencrypt_stringEncrypt a stringrekeyRe-key a vault encrypted fileoptional arguments:--versionshow program's version number, config file location, configured module search path, module location, executable location and exit-h, --helpshow this help message and exit-v, --verboseverbose mode (-vvv for more, -vvvv to enable connection debugging)See 'ansible-vault <command> --help' for more information on a specific command.ansible-vault 常用命令# 加密文件ansible-vault encrypt test-vault.ymlansible-vault encrypt test-vault.yml --vault-password-file pwdfile# 解密文件ansible-vault decrypt test-vault.ymlansible-vault decrypt test-vault.yml --vault-password-file pwdfile# 查看文件ansible-vault view test-vault.ymlansible-vault view test-vault.yml --vault-password-file pwdfile# 重置文件密码ansible-vault rekey test-vault.ymlansible-vault rekey test-vault.yml --vault-password-file pwdfile --new-vault-password-file pwdfilenew# 创建加密文件ansible-vault create test-vault.ymlansible-vault create test-vault.yml --vault-password-file pwdfile# 编辑加密文件ansible-vault edit test-vault.ymlansible-vault edit test-vault.yml --vault-password-file pwdfile# 加密字符串ansible-vault encrypt_string 'test123456'ansible-vault encrypt_string 'test123456' --name 'ansible_ssh_pass'ansible-vault encrypt_string 'test123456' --name 'ansible_ssh_pass' --vault-id anliven@pwdfileansible-vault "--vault-id"选项# 从ansible2.4版本开始,官方推荐使用"--vault-id"选项代替"--vault-password-file"选项指定密码文件# “--vault-id prompt”功能上等同于"--ask-vault-pass"选项# 支持同时使用多个密码文件进行解密,适用于“引用其他文件”的场景# 可以在被加密文件中包含特定字符“做记号”ansible-vault encrypt_string 'test123456' --name 'ansible_ssh_pass' --vault-id pwdfile# 加密字符串ansible-vault encrypt test-vault.yml --vault-id pwdfile# 加密文件ansible-vault encrypt test-vault.yml --vault-id anliven@pwdfile# 加密完成后的文件内容包含anliven字符ansible-vault decrypt test-vault.yml --vault-id pwdfile# 解密文件ansible-vault view test-vault.yml --vault-id pwdfile# 查看文件ansible-vault edit test-vault.yml --vault-id pwdfile# 编辑文件ansible-vault rekey test-vault.yml --vault-id pwdfile# 交互式密码重置ansible-vault rekey test-vault.yml --vault-id pwdfile--new-vault-id pwdfilenew# 通过新密码文件重置ansible-playbook test-vault.yml --vault-id pwdfile# 运行playbookansible-playbook test-vault.yml --vault-id pwdfile1 --vault-id pwdfile2# 提供多个密码文件来解密,test-vault.yml中引用其他vault加密文件ansible-playbook test-vault1.yml test-vault2.yml --vault-id pwdfile1 --vault-id pwdfile2# 提供多个加密文件来解密多个文件

推荐阅读