在ansible中,只有when可以实现条件判断

tasks:

  - name: config the yum repo for centos 7

    yum_repository:

       name: epel

       description: epel

       baseurl: http://mirrors.aliyun.com/epel/7/$basearch/

       gpgcheck: no

    when: ansible_distribution_major_version == "7"

注意两点:

when判断的对象是task,所以和task在同一列表层次。它的判断结果决定它所在task是否执行,而不是它下面的task是否执行。

when中引用变量的时候不需要加{{ }}符号。


(1)不设置条件时,两台服务器同时执行命令,如何设置只允许192.168.20.42执行操作命令


(2)配置playbook

[root@k8s-master2 install]# more when.yaml

---

- hosts: webservers

  remote_user: root

  gather_facts: true

  tasks:

  - name: 只允许192.168.20.42主机执行

    debug: msg="{{ansible_default_ipv4.address}}"

when: ansible_default_ipv4.address == '192.168.20.42'


(3)执行操作:

[root@k8s-master2 install]# ansible-playbook when.yaml 

结果跳过43服务器,直接在42服务器上执行


二、循环:批量创建用户


[root@k8s-master2 install]# more user.yaml

---

- hosts: webservers

  remote_user: root

  gather_facts: true

  tasks:

  - name: 所有主机执行


    user: name={{ item }} state=present

    with_items:

      - user1

      - user2

      - hahashen

[root@k8s-master2 install]# ansible-playbook -C user.yaml

[root@k8s-master2 install]# ansible-playbook  user.yaml

验证:

192.168.20.41

[root@k8s-node1 ~]# tail -n 3 /etc/passwd

user1:x:1001:1001::/home/user1:/bin/bash

user2:x:1002:1002::/home/user2:/bin/bash

hahashen:x:1003:1003::/home/hahashen:/bin/bash

 

192.168.20.42

[root@k8s-node2 ~]# tail -n 3 /etc/passwd

user1:x:1001:1001::/home/user1:/bin/bash

user2:x:1002:1002::/home/user2:/bin/bash

hahashen:x:1003:1003::/home/hahashen:/bin/bash


↓↓ 点击"阅读原文" 【加入DevOps运维团

相关阅读:

1、Playbook分发Nginx配置文件

2、阿里云--实战Ansible批量更新远程主机用户密码

3、干货--ansible配置和服务器批量分发(一)

4、干货--ansible配置和服务器批量分发(二)

5、Ansible的安装、配置



©著作权归作者所有:来自51CTO博客作者mob604756e834f7的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Playbook批量部署Docker
  2. 自动化测试用例失败继续执行
  3. 实战--Playbook批量修改密码
  4. Redis搭建和主从复制
  5. 欢迎加入技术交流
  6. 实战--Playbook批量部署zabbix-agent
  7. 实战--Playbook批量更改服务器主机名
  8. DevOps 中高效测试基础架构的最佳实践
  9. Linux免交互登录远程服务器并执行命令

随机推荐

  1. Android架构组件-App架构指南
  2. android studio 怎么做屏幕适配?
  3. LibGDX制作android动态壁纸
  4. 第一章 andrid visdio 安装
  5. Run Android on Your Netbook or Desktop
  6. Android(安卓)断点续传的原理剖析与实例
  7. android系统自带的主题与样式(theme and
  8. Android 之EditText InputType说明
  9. android Application Component研究之Ser
  10. Android用户界面UI组件--AdapterView及其