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)所有。如需引用本站内容,请注明来源及作者。







评论