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

Ansible Playbook 标签(Tags)

  • 通过标签(tags)可以选择运行或跳过playbook中的指定任务
  • 在playbook为任务定义一个"标签",在通过ansible-playbook命令执行此playbook时使用 --tags 或 --skip-tags选项选择运行或跳过这个任务
  • 可以使用系统特殊标签,也可以自定义标签
  • 可以为同一个任务设定多个标签,也可以为不同的任务设定相同的标签
语法格式
# 格式1tags: - testtag - t2# 格式2tags: testtag,t2# 格式3tags: ['testtag','t2']特殊标签
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.

经验总结扩展阅读