ansible技术栈 一
#### Role角色
复习总结 Role角色
下载安装包
yum install -y tree #安装查看目录包
ansible一键创建role角色目录
ansible-galaxy init ~/ansible/roles/名称
ansible-role角色模板官方
下载role角色模板方法
ansible常用指令总结
1、ansible-playbook --syntax-check play.yml #检测yml文件语法
2、ansible-playbook +文件 #执行文件语法
3、ansible --version #查看版本
4、ansible --help #看帮助
5、rpm -qc ansible #查看配置文件
6、ansible 组名 --list-hosts #查看组内主机列表:
7、gather_facts: false #是否执行setup模块,搜集对方机器的信息
8.ansible-doc -s fetch” #命令,查看一下fetch模块的用法
9.ansible-playbook --check test.yml #模拟运行不会执行
10.
ansible常用模块详解
1.远程复制备份模块:copy
模块参数详解:
src=:指定源文件路径
dest=:目标地址(拷贝到哪里)
owner:指定属主
group:指定属组
mode:指定权限,可以以数字指定比如0644
backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
2.软件包管理 yum模块
ansible 组名 -m yum -a "name=httpd state=latest" -o
state= #状态是什么,干什么
state=absent 用于remove安装包
state=latest 表示最新的
state=removed 表示卸载
3.服务管理service模块
1、ansible 组名 -m service -a "name=httpd state=started" #启动
2、ansible 组名 -m service -a "name=httpd state=stopped" #停止
3、ansible 组名 -m service -a "name=httpd state=restarted" #重启
4、ansible 组名 -m service -a "name=httpd state=started enabled=yes" #开机启动
5、ansible 组名 -m service -a "name=httpd state=started enabled=no" #开机关闭
4.文件模块file
owner:修改属主
group:修改属组
mode:修改权限
path=:要修改文件的路径
recurse:递归的设置文件的属性,只对目录有效 yes:表示使用递归设置
state:
touch:创建一个新的空文件
directory:创建一个新的目录,当目录存在时不会进行修改
循环:迭代,需要重复执行的任务;
对迭代项的引用,固定变量名为”item”,使用with_item属性给定要迭代的元素;
handlers:由特定条件触发的Tasks
handlers:处理器
notify:触发器
自定义vars_files变量
变量调用语法:
{{ var_name }}
查看Role角色 目录结构
tree + 目录名称 # 可以查看你的目录下面role角色用的哪个yml文件
Role角色目录的创建
roles为自带目录,如果不存在可以创建
步骤1;先创建目录 和目录下面的文件
[root roles]# mkdir -p nginx/{files,handlers,tasks,templates,vars}
#创建role角色的外部目录
[root@web1 roles]# touch site.yml
#创建存放指定角色文件
[root@web1 roles]# touch nginx/{handlers,tasks,vars}/main.yml
#创建每一个目录下面的yml文件
Role角色目录及文件详解
目录顺序:
role_name/ ---角色名称=目录
files/:存储一些可以用copy调用的静态文件。
tasks/: 存储任务的目录,此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;
handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由(与notify:名字相同,方便notify通知执行下一条命令)通过main.yml进行“包含”调用;
vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;
templates/:存储由template模块调用的模板文本; (也可以调用变量)
site.yml:定义哪个主机应用哪个角色
自己理解目录详解
Ansible Playbook运维常用命令
ansible-playbook // 查看帮助
ansible-playbook a.yml --syntax-check //检查yaml文件的语法是否正确
ansible-playbook a.yml --list-task //检查tasks任务
ansible-playbook a.yml --list-hosts //检查生效的主机
ansible-playbook a.yml --start-at-task='Copy Nginx.conf' //指定从某个task开始运行
ansible-playbook --syntax-check -e "hosts=c7" xx.yml -s -k // 语法检查
排除某些主机
ansible-playbook -i hostslist ***.yml --limit 192.168.0.1 // 排除单个主机
ansible-playbook -i hostslist ***.yml --limit @failed.txt // 排除多个主机
启用并行进程数执行
ansible-playbook update-stg.yml -f 10 -s -k // 启用10个并行进程数执行
启用换行编写
## 备份文件
- name: "mkdir backup directory"
hosts: "{{ hosts }}"
tasks:
- name: "mkdir backup dirctory"
file: >
path=/opt/backup/xxx state=directory
mode=0755