ansible学习笔记-playbook

1、palybook简单实例

---
- 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"


2、变量引用

可在playbook、单个任务中

(1)vars:
       - name: dxx
       - age: 14

(2)vars_files:
       - variables

(3)vars_prompt:
       - name: version
         prompt: please input version
         private: no


3、字典和列表变量的调用

     class.name
      class[0].name

4、task使用3种方法

- 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

5、handlers注意

(1)当任务执行完毕后才会通知

(2)无论通知多少次,最终只会通知一次(????具体是哪一次)

(3)没有调用通知,handler也不会执行

6、变量定义设置默认值

work_name="{{ name |default(tom) }}"

7、with_items使用

正确姿势:
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

8、roles 角色

(1)作用

 角色允许你将变量、文件、模板、handler、任务放到一个文件夹中,然后包含他们。

 角色中可以包含角色(在建立好一个有效的依赖关系后),也可以传递变量给角色

(2)可包含的文件夹,不使用可以删除

main.yml
roles
   myslq
     files              存放role需要的文件
     tasks              存放playbook的yml文件
     templates          存放模板文件
     handlers           存放调用任务文件(类似编码中定义的外部函数)
     vars               存放role中的变量文件
     meta               
     defaults
   redis
     files
     tasks
     templates
     handlers
     vars
     meta
     defaults

(3)使用方式

---
- 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

9、条件判断when

(1)when
#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
(2)changed_when

当满足某些条件时,部署状态显示changed。

(3)failed_when

当满足某些条件时,部署状态显示失败。

注意:include_role任务中,使用when,不能包含变量(会报条件状态异常)

          解决方案:通过block来保住include_role,给block设置when条件。

转载于:https://my.oschina.net/u/1783725/blog/1593464

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值