D-40综合架构批量管理 ansible(自动化软件)

2019-10-03  本文已影响0人  荆俊玮

一、剧本编写扩展功能

1.剧本变量设置功能

三种方式:主机清单、命令行、剧本设置
优先级:命令行>剧本设置>主机清单

2.剧本变量注册功能(在剧本执行过程中显示指定输出信息,参数为register)

register: abc(设置变量)
debug: msg={{ abc.stdout_lines(按行标准格式) }}
ps:register和debug需要分开,不能在同一个任务内执行

3.剧本编写判断功能(根据条件信息执行任务)

when 条件变量信息(通过setup模块收集上来的主机条件信息) ==/!= 指定信息

4.剧本编写循环功能

编写循环功能:
编写方式一: 列表方式设置循环

- hosts: 172.16.1.41
 tasks:
- name: install software
  yum: name={{ item }} state=installed
  with_items:
    - rsync
    - nfs-utils
    - telnet-server

未来版本推荐安装多个软件使用方法,而非循环功能

image.png

编写方式二: 字典方式设置循环

5. 剧本忽略错误功能(剧本中shell模块使用时错误问题)

[root@m01 ansible_playbook]# cat test_忽略错误配置.yml
- hosts: 172.16.1.41
tasks:
- name: install software
shell: yum install -y htop
- name: create user
shell: useradd oldboy
ignore_errors: yes 开启忽略错误功能
- name: boot server
shell: systemctl start rsyncd
补充: 使用shell万能模块会出现的问题:
01. 实现批量管理操作会更加麻烦
02. 实现剧本任务功能,不具有幂等性

6. 剧本编写标签功能 调式剧本

-name: create user
user: name=rsync shell=/sbin/nologin create_home=no
tags: oldboy01 (变量)
ansible-playbook test_标签功能配置.yml -t oldboy01 --- 只执行标记任务
ansible-playbook test_标签功能配置.yml --skip-tags oldboy01 --- 跳过标记任务

7.剧本提高执行效率

取消剧本收集主机信息功能
-hosts: 172.16.1.41
gather_facts: no --- 提升剧本执行效率
tasks:
PS: 取消了收集信息功能, 剧本判断功能也无法使用了
==============================================================
总结: 剧本执行慢的原因
01. SSH远程连接优化没有配置 关闭认证功能 关闭DNS反向解析功能
02. yum下面软件慢 使用本地yum仓库
03. 剧本执行收集信息慢
04. 剧本执行过程必须完整 yum -- 慢 -- ctrl+c -- yum lockfile is 调用

8.剧本触发器功能配置

cat test_触发功能配置.yml
- hosts: 172.16.1.41
tasks:
- name: push config file
copy: src=/tmp/rsyncd.conf dest=/etc/
notify: rsync_restart
- name: boot server
service: name=rsyncd state=started

handlers:
- name: rsync_restart
service: name=rsyncd state=restarted
PS: 触发器任务会在所有任务执行完毕之后才执行

剧本编写扩展功能:

https://docs.ansible.com/ansible/latest/user_guide/playbooks.html

二、ansible剧本整合功能

方式一:include_tasks: f1.yml
- hosts: all
remote_user: root
tasks:
- include_tasks: f1.yml
- include_tasks: f2.yml

方式二:include: f1.yml
- include:f1.yml
- include:f2.yml

方式三:- import_playbook: 推荐
[root@m01 ansible-playbook]# cat main.yml
- import_playbook: base.yml
- import_playbook: rsync.yml
- import_playbook: nfs.yml

编写多个服务剧本:
rsync
nfs

第一个历程: 编写主机配置文件
vim /etc/ansible/hosts
[oldboy]
172.16.1.7
172.16.1.31
172.16.1.41

第二个历程: 创建存储分发文件目录
# ll file/
总用量 12
-rw-r--r-- 1 root root  29 8月  26 18:23 exports
-rw-r--r-- 1 root root 406 8月  26 17:59 rsyncd.conf
-rw-r--r-- 1 root root  23 8月  26 18:23 rsync.password

第三个历程: 编写一键化部署服务剧本:
rsync_auto.yml
省略

nfs_auto.yml

第四个历程: 将多个剧本进行整合
上一篇 下一篇

猜你喜欢

热点阅读