--- - hosts: all user: root vars: - name: "dxx" - age: 15 tasks: - name: echo {{name}} shell: echo {{name}} notify: - say hello handlers: - name: say hello shell: echo "say hello"
可在playbook、单个任务中mysql
(1)vars: - name: dxx - age: 14 (2)vars_files: - variables (3)vars_prompt: - name: version prompt: please input version private: no
class.name
class[0].nameweb
- name: copy /aaa action: copy src=/aaa dest=/bbb/aaa - name: copy /aaa copy: src=/aaa dest=/bbb/aaa - name: copy /aaa copy: src: /aaa dest: /bbb/aaa
(1)当任务执行完毕后才会通知redis
(2)不管通知多少次,最终只会通知一次(????具体是哪一次)sql
(3)没有调用通知,handler也不会执行shell
work_name="{{ name |default(tom) }}"
正确姿式: with_items: - aa: 11 bb: 22 - aa: 55 bb: 66 with_items: - {aa: 11,bb: 22} - {aa: 55,bb: 66} 错误姿式 with_items: aa: 11 bb: 22
(1)做用tomcat
角色容许你将变量、文件、模板、handler、任务放到一个文件夹中,而后包含他们。函数
角色中能够包含角色(在创建好一个有效的依赖关系后),也能够传递变量给角色编码
(2)可包含的文件夹,不使用能够删除spa
main.yml roles myslq files 存放role须要的文件 tasks 存放playbook的yml文件 templates 存放模板文件 handlers 存放调用任务文件(相似编码中定义的外部函数) vars 存放role中的变量文件 meta defaults redis files tasks templates handlers vars meta defaults
(3)使用方式rest
--- - hosts: webserver roles: - { role: start_server } - { role: end_server, port: 80} - { role: restart_server, when: port is defined } - hosts: mysql roles: - { role: start_mysql } - hosts: redis tasks: - name: include_role tomcat include_role: name=tomcat port=8080
#when的经常使用语法 when: foo is defined when: foo is not defined when: result|failed when: result|success when: result|skipped vars: trip: true when: trip when: ansible_os_family == 'RedHat' when: not ansible_os_family =="RedHat" or ansible_os_family =="Debian" #若是包含hi when: resut.stdout.find('hi') != -1
当知足某些条件时,部署状态显示changed。
当知足某些条件时,部署状态显示失败。
注意:include_role任务中,使用when,不能包含变量(会报条件状态异常)
解决方案:经过block来保住include_role,给block设置when条件。