Ansible教程(7)when条件判断与with循环
一、Ansible with循环
在Ansible中使用with_items或者loop语句进行实现循环操作,适用于需要使用同一个模块重复执行的任务,比如对不同的服务进行启动调用的都是同一个模块。进行循环时使用固定变量名{{ itme }}表示要引用循环变量,然后在task中使用with_items或者loop关键词来定义变量和值
示例1、循环启动多个服务
#改造前需要重复编写 - hosts: webservers tasks: - name: start nginx systemd: name: nginx state: started - name: start mysql systemd: name: mysql state: started #改造后 - hosts: webservers tasks: - name: start nginx and mysql systemd: name: "{{ item }}" state: started loop: - nginx - mysql
示例2、循环安装多个软件
vi /etc/ansible/with.yml - hosts: webservers tasks: - name: install nginx mysql yum: name: "{{ item }}" state: latest loop: - httpd - mysql
示例3、传递键值对到循环中
- hosts: webservers tasks: - name: add users user: "{{ item.name }}" #引用item中的name这个key groups: "{{ item.groups }}" state: present loop: - { name: 'user1', groups: 'root' } #定义了name这个key和值 - { name: 'user2', groups: 'nologin' }
二、Ansible when条件判断
在Ansible中通过关键词when进行条件判断,比如判断系统版本、内存大小,然后根据判断结果来执行下一步操作
示例1、根据不同的系统安装正确的软件包
cat when_system.yml - hosts: web tasks: - name: CentOS install httpd yum: name: httpd state: present when: ansible_distribution == "CentOS" - name: Ubuntu install httpd yum: name: httpd2 state: present when: ansible_distribution == "Ubuntu"
示例1:判断客户端系统判断,然后选择对应的配置文件
vi /etc/ansible/when.yml #加入如下内容 - hosts: dbservers user: root vars: - http_port: 8080 tasks: - name: install nginx yum: name=nginx - name: copy conf for centos7 template: src=nginx.conf7.j2 dest=/etc/nginx/nginx.conf when: ansible_distribution_major_version == "7" #这里的变量是取facts信息 notify: restart service - name: copy conf for centos6 template: src=nginx.conf6.j2 dest=/etc/nginx/nginx.conf when: ansible_distribution_major_version == "6" notify: restart service - name: start service service: name=nginx state=started enabled=yes handlers: - name: restart service service: name=nginx state=restarted
示例2:当远程主机FQDN名为test时,给该主机添加一个用户user10
vi test.yml - hosts: all remote_user: root vars: - username: user10 tasks: - name: create {{ username }} user user: name={{ username }} when: ansible_fqdn == "test"
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论