rsync剧本编写
- vim rsync_server.yaml #创建剧本
- hosts:172.1.1.1
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/ #此处如果是修改了文件,需要重启的时候出现的问题
- name:03-create user
user: name=rsync create_home=no shell=/sbin/nologin
shell: useradd rsync -M -s /sbin/nologin
- name:04-create backup directory
file:path/backup state=directory owner=rsync group=rsync
- name:05-create password directory
copy: content=rsync_backup:demo123 dest=/etc/password mode=600
- name: 06-start service
service: name=rsyncd state=started enabled=yes
- hosts: 172.1.1.2 #如果是多台客户端,怎么启动
tasks:
- name: 01-installed software
yum:name=rsync state=installed
- name: 02 -create password file
copy:content=demo123 dest=/etc/rsync.password mode=600
- name: 03 test data backup
file:dest=/tmp/test.txt state=touch
- name:04 start test
shell:rsync -avz /tmp/test.txt rsync_backup@172.1.1.1::backup --password-file=/etc/rsync.password
ansible-playbook --syntax-check rsync_server.yaml
剧本常见错误
1、剧本语法规范是否符合(空格、冒号、短横线)
2、剧本中的模块使用是否正确
3、剧本中的一个name标识下面只可以写一个任务信息
配置主机清单的方式?
PS:配置文件中可以管理少数几台服务器,如果服务器的量升高之后,管理就会变得异常复杂繁琐。
主机清单配置模式一:
1、分组管理
[web]
172.1.1.1
172.1.1.2
[data]
172.1.1.3
172.1.1.4
ansible web -a "hostname" #查看某一组的主机
2、主机名符号配置
[web]
172.1.1.[7:9]
3、支持非标准端口配置
[web]
web01:1122
此方式的目标终端的端口可以变更,不需要指定默认的端口,批量管理服务器自行配置好目的主机的服务端口,即可连接
4、支持主机的特殊变量
[web]
172.1.1.1 ansible_ssh_host=123.1.1.1 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123
没有分发公钥的情况下,也可以操作主机
5、主机嵌入式配置
[rsync:children]
rsync_client
rsync_server
[rsync_server]
121.1.1.1
[rsync_client]
123.1.1.1
[web:vars] #嵌入式变量
a=111
剧本的扩展功能
1、剧本中设置变量信息
vars:
backupdir:/backup
passfile:/rsync.password
{{backupdir}} #在需要用到的位置调用变量
a、在直接在剧本文件中编写
b、在命令行中进行指定 ansible-playbook --extra-vars=demo=data
c、在主机清单文件编写
三种变量的调用方式都使用了,三种方式的优先级?? #配置不同的变量,执行剧本,查看一下,在client哪一项先出现,即可确定优先级
行变量>剧本变量>主机清单变量
如何设置全局变量? roles 剧本整合
2、剧本中设置注册信息
执行剧本时,显示输出命令结果信息
需要模块:
register、debug
3、剧本中设置判断信息
指定判断条件
(ansible_hostname == "nfs")
setup模块中显示被管理主机的详细信息
4、剧本中设置循环信息(自行百度)
5、剧本中设置错误标签
模块:ignore_errors:yes
6、剧本中设置标签信息——只运行标签标记的行,其它已经运行的就不在运行了
模块:tags:dir[不要使用数字]
7、剧本中设置触发信息(触发器)
notify:restart rsync
handler:
-name:restart rsync
8、剧本中进行剧本整合
编写NFS剧本
1、创建目录
mkdir -r ansible/nfs-file/{nfs-server,nfs-client} tree nfs-file
2、编写剧本信息
-hosts:nfs
tasks:
-name:01-install nfs server
yum:
name;['nfs-utils' , 'rpcbind']
state:installed
-hosts:nfs_server
vars:
data_dir:/data
tasks:
gather_facts:no #不要让ansible收集信息
-name:01-copy conf file
copy:src=/etc/ansible/ansible-playbook/nfs-file/nfs-server/exports/ dest=/etc
notify:restart nfs server
-name:02-create directory
file:path=/{{data_dir}} state=directory owner=nfsnobody group=nfsnobody
-name:03-start service
#service:name=nfs state=started enabled=yes
#service:name=rpcbind state=started enabled=yes
services:name={{ item }} state=started enabled=yes
with_items:
-rpcbind
-nfs
-hosts:nfs_client
tasks:
-name:01-mounted
mount:src=172.16.1.31:/{{data_dir}} path=/mnt fstype=nfs state=mounted
-name:02-check mount
shell:df -h | grep /data
register:mount_info
-name:display mount info
debug:msg={{ mount_info.stdout_lines }}
handlers:
-name:restart nfs server
service:name=nfs state=restarted
3、剧本测试
4、执行剧本
多剧本进行整合
方式一:include_tasks:f1.yml
-host:all
remote_user:root
tasks:
-include_tasks:f1.yml
-include_tasks:f2.yml
方式二:include:f1.yml
-include:f1.yml
-include:f2.yml
方式三:-import_playbook
剧本编写的问题
ansible角色————规范以下问题
1、编写目录不够规范——混乱
2、编写好的任务重复使用
3、服务端配置文件变更,客户端参数信息也自动化
4、汇总剧本中没有显示主机角色信息
5、一个剧本内容信息过多,不容易进行阅读,如果进行拆分
规范目录结构
cd /etc/ansible/roles
mkdir {rsync,nfs} ----创建相应角色目录
mkdir {nfs,rsync,web,sersync}/{vars,tasks,templates,handlers,files} ----创建角色目录下的子目录,ansible规定的目录
files: ---保存需要分发的文件目录
handlers:----保存触发器配置文件信息
tasks:-----保存要执行动作信息文件
templates:----保存要分发的模板文件,模板文件中可以设置变量信息
vars:------保存变量信息文件
在roles目录中创建相关文件
编写文件流程图——自行百度
编写一个主剧本文件
cd /etc/ansible/roles
vim site.yaml
剧本出现错误排查思路
1、找到剧本中出现问题的关键点
2、将剧本中的操作转换成模块进行操作 #命令行操作
3、将模块操作转换为linux命令操作 #利用命令linux中断去执行
本地命令执行
远程终端上执行
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。