Ansible中的handlers 触发器功能和when,with_items循环

1.handlers 触发器功能
通过notify 监控某个模块,触发对应handlers
例子:只有配置文件发生变化,重启Nginx

剧本问题,无论配置是否分发,Nginx都会重启

任务:只有配置文件发生变化,nginx才会再重启

- hosts: web
  gather_facts: false
  tasks:
    - name: fenfa ngx conf
      copy:
      	src: nginx.xonf
      	dest: /etc/nginx/conf.d
      	backup: yes	#是否备份源文件
      notify:       #设置触发条件,当上面配置文件改变执行handlers
        - nginx restart
   handlers:   
    - name: reload 
      systemd:
         name: nginx
         state: reloaded
         

2.when

when 一般与ansible中的facts变量一起使用,判断主机系统类型
when也可与register变量一起搭配

比如:

when: (ansible_distribution == "Ubuntu")  #判断系统是否是Ubuntu,若是执行ansible_distribution ansible facts变量
when: (ansible_hostname is match("web|lb")) #判断主机名是否是web或lb
when: (ansible_hostname is not match("web|lb"))

举例:给主机清单中的web服务器和lb服务器配置Nginx,yum源
方案1:web和lb放在一起组,修改主机清单
方案2:在剧本中增加when判断

vi nginx.yaml
- hosts: all
  gather_facts: ture
  tasks:
   - name: add nginx yum repo
     yum_repositiry:
      name: "nginx-stable"
      description: "ngixn yum repo"
      baseurl: " "		#yum源地址
      enabled: yes
      gpgchechk: no
      file: nginx
    when: (ansible_hostname is match("web|lb"))

3.with_items循环
with_items一般大多数用于批量重启服务,好多服务,systemd模块可以重启服务,但是不支持多个服务同时管理。
比如:重启web服务器中的Nginx,crond,php-fpm

- hosts: web
  gather_facts: false
  tasks:
   - name: restart 很多服务
     systemd:  #不支持多个服务同时管理
        name: "{{ item }}"
        state: stopped
     with_items:
        - nginx
        - crond
        - php-fpm

3.1用with_items批量创建用户

#批量建立用户,同时指定用户名,并指定UID
#key1: vlaue1, key2:value2  #key变量名,value内容值
- hosts: web
  gather_facts: false
  tasks:
  - name: add user
    user:  name={{ item.name}}  uid={{ item.uid }}
    with_items:
      - {name: 'abc12',uid: '2'}
      - {name: 'abc13',uid: '3'}
      - {name: 'abc14',uid: '4'}
      - {name: 'abc15',uid: '5'}
4.ansible循环小结

配合一些模块实现批量操作,比如批量重启/关闭/开启服务,批量添加用户
常用的是with_items,loop功能更多一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值