ansbile-----------------------03.批理管理基础模块(playbook)
Ansible-Playbook 官网地址:https://docs.ansible.com/ansible/latest/user_guide/playbooks.html
利用剧本完成服务--键化部署:
rsync 服务部署
nfs 服务部署
sersync 服务部署
全网备份项目
rsync服务剧本编写:
准备工作:
01.熟悉软件部署流程;
02.熟悉ansible软件模块使用
03.熟悉ansible剧本编写规范
ansible:
ad- hoc
临时实现批量管理功能(模块)
playbook永久实现批量管理功能

ansible剧本功能实践介绍
================================================================================================
- 01. 编写剧本的重要功能介绍
- a 在剧本中设置变量信息 OK
- b 在剧本中设置注册信息 OK 执行剧本时,可以显示输出命令结果信息
- b 在剧本中设置判断信息 OK
- c 在剧本中设置循环信息
- d 在剧本中设置错误忽略
- d 在剧本中设置标签信息
- e 在剧本中设置触发信息
- f 在剧本中进行剧本整合
- 02. 在剧本中设置变量信息
- 方式一:直接在剧本文件编写
vars:
backupdir: /backup
passfile: rsync.password
- 方式二:在命令行中进行指定
- ansible-playbook -e backupdir=/data -e passfile=rsync..password rsync_host_vars.yaml
- 方式三:在主机清单文件编写
-
[rsync_server]
192.168.122.151
[rsync_server:vars]
backupdir=/backup
passfile=rsync-password[rsync_client]
192.168.122.157
192.168.122.152
[rsync_client:vars]
passfile=rsync-password
- 三种变量设置方式都配置了,三种方式的优先级???
最优先: 命令行变量设置
次优先: 剧本中变量设置
最后: 主机清单变量设置
如何全局设置变量: roles 剧本整合
- 03. 在剧本中设置注册信息
- - 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 }}
显示进程信息,表示服务已经正常启动
PS: 设置变量不能有空格信息
2. register 取值后比较大小
- name: sleep time
shell: cat /opt/rmax/bs/web-8080/logs/catalina.out |wc -l
register: bslow
- name: step3
shell: echo "{{ bslow.stdout }} " >>/tmp/ppp.txt
when: bslow.stdout|int > 10000
PS: 注册变量后取值(int)大小 然后比较大小,执行结果。
- 04. 在剧本中设置判断信息
- 如何指定判断条件:
- hosts: rsync_client tasks: - name: 01-centos-install rsync yum: name=iftop state=installed when: (ansible_distribution == "CentOS") # --- 判断系统为 Centos 时 - name: 01-debain-install rsync apt: name=iftop state=present when: (ansible_distribution == "Debian") # --- 判断系统为 Debain 时
- hosts: all
tasks:
- name: 01-centos-install soft
shell: echo "1" >> /tmp/1.txt
when: ( ansible_all_ipv4_addresses[0] == '192.168.122.135') or (ansible_distribution == "Debian")
setup模块中显示被管理主机系统的详细信息
获取内置变量方法:
ansible rsync -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]
04. 在剧本中设置循环信息
- hosts: rsync_client tasks: - name: 01-centos-install soft yum: name: ['rsync','tree','wget','glances'] #---- 循环方式一 state: installed when: (ansible_distribution == "CentOS") #判断 - name: 01-debain-install soft apt: name={{ item }} state=present #---- 循环方式二 with_items: - wget - tree - iotop when: (ansible_distribution == "Debian") #判断
0.5 在剧本中设置错误忽略


06.在剧本中设置标签信息

执行:
ansible-playbook]# ansible-playbook -t T1 rsync_标签信息.yaml ansible-playbook]# ansible-playbook -tags=T1 rsync_标签信息.yaml ansible-playbook]# ansible-playbook --skip-tags=T1 rsync_标签信息.yaml ---- 跳过标签执行

07. 在剧本中设置触发功能
- hosts: rsync_server tasks: - name: 01-install rsync yum: name=rsync state=installed - name: 02-push conf file copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/ notify: restart rsync server - name: 03-create user #user: name=rsync create_home=no shell=/sbin/nologin shell: useradd rsync -M -s /sbin/nologin ignore_errors: yes - name: 04-create backup dir file: path=/backup state=directory owner=rsync group=rsync - name: 05-create password file copy: content=rsync_backup:happy123 dest=/etc/rsync.password mode=600 - name: 06-start rsync server service: name=rsyncd state=started enabled=yes handlers: - name: restart rsync server service: name=rsyncd state=restarted


08.
浙公网安备 33010602011771号