ansible 剧本
1.如任何配置主机清单
配置文件:/etc/ansible/hosts
vim /etc/ansible/hosts
1.1 分组配置主机信息(使用的时候就可以直接使用web data )
[web]
172.16.1.7
172.16.1.8
[data]
172.16.1.41
1.2 主机名符号匹配配置
[web]
172.16.1.[7:9]
1.3 跟上非标准远程端口
[web]
web01:52113
172.16.1.7:52213
1.4 主机使用特殊的变量
[web]
172.16.1.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456
[web]
web01 ansible_ssh_host=172.16.1.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456
1.5 主机组名嵌入配置
嵌入子组信息
[rsync:children]
rsync_server
rsync_client
[rsync_server]
172.16.1.41
[rsync_client]
172.16.1.31
172.16.1.7
嵌入式变量信息
[web:vars]
ansible_ssh_host=172.16.1.7
ansible_ssh_port=52113
ansible_ssh_user=root
ansible_ssh_pass=123456
[web]
web01
2. 剧本中的重要功能介绍
2.1 变量
方式一:直接在剧本中进行编写
- hosts:
vars:
oldboy01:123
oldboy02:456
tasks:
-name:
方式二:在命令行中进行指定
ansible-playbook --extra-vars=oldboy01=data01
方式三:在主机清单文件编写
[oldboy]
oldboy01=123
oldboy02=456
三种方式的优先级:命令行>剧本中>主机清单
2.2 设置注册信息
- hosts: oldboy
tasks:
- name: check server port
shell: netstat -lntup --- 端口信息
register: get_server_port<--端口信
- name: display port info
debug: msg={{ get_server_port.stdout_lines }}
2.3设置判断信息
通过steup查看所有的信息
ansible 172.16.1.31 -m setup
filter过滤
ansible 172.16.1.31 -m setup -a "filter=ansible_hostname"
常见的主机信息:
ansible_all_ipv4_addresses: 仅显示ipv4的信息。
ansible_devices: 仅显示磁盘设备信息。
ansible_distribution: 显示是什么系统,例:centos,suse等。
ansible_distribution_major_version: 显示是系统主版本。
ansible_distribution_version: 仅显示系统版本。
ansible_machine: 显示系统类型,例:32位,还是64位。
ansible_eth0: 仅显示eth0的信息。
ansible_hostname: 仅显示主机名。
ansible_kernel: 仅显示内核版本。
ansible_lvm: 显示lvm相关信息。
ansible_memtotal_mb: 显示系统总内存。
ansible_memfree_mb: 显示可用系统内存。
ansible_memory_mb: 详细显示内存情况。
ansible_swaptotal_mb: 显示总的swap内存。
ansible_swapfree_mb: 显示swap内存的可用内存。
ansible_mounts: 显示系统磁盘挂载情况。
ansible_processor: 显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus: 显示cpu个数(只显示总的个数)。
获取子信息方法:
ansible_eth0[ipv4]
判断的具体应用格式:
- name: install httpd
yum: name=httpd state=installed
when: (系统情况 == "CentOS")
注意:
使用when
()括号
双等号 ==
2.4 剧本中的循环
with_items:
- name: Add Users
user: name={{ item.name }} groups={{ item.groups }} state=present
with_items:
- { name: 'testuser1', groups: 'bin' }
- { name: 'testuser2', groups: 'root' }
yum的设置格式
- name:
yum:
name: ['rpcbind','nfs-utils']
state: installed
2.5 剧本中设置忽略错误
遇到错误就跳过
ignore_errors: yes
2.6 剧本中设置标签(tags)
- name: install httpd2
yum: name=httpd2 state=installed
tags: t3
指定执行那个标签
ansible-playbook --tags=t3 test.yaml
跳过标签
ansible-playbook --skip-tags=t2 test.yaml
2.7 触发功能
- name: copy-file
copy: src= {{Data_dir}} path=/etc
notify: restart rsync service
handler:
- name: restart rsync service
service: name=rsyncd state=restarted
nitofy的内容和name的内容要一致
handler要和tasks一致,service不要-
3. 多个剧本整合
方式一:
- hosts: all
remote_user: root
tasks:
- include_tasks: f1.yaml
- include_tasks: f2.yaml
方式二:
- include: f1.yml
- include: f2.yml
方式三 :
- import_playbook: f1.yml
- import_playbook: f2.yml