Ansible分享
安装
yum -y install epel-release
yum -y install ansible
配置被控主机地址
vim /etc/ansible/host
[webserver]
172.16.1.[4:5]
相关命令
ansible
核心命令
ansible 主机组 -m 模块名 -a '参数内容'
# 默认模块为command模块
ansible-doc
文档工具
ansible-doc -s 模块名
用于查询模块的具体作用以及参数列表 不加-s表示详细文档
ansible-galaxy
ansible-playbook
任务计划脚本编排工具 重点下面单独展开说
ansible-console
交互工具
ansible-vault
加密解密
常用模块
-
command
-
ping
-
shell
执行shell命令,相较于command 支持*通配符 管道符等一些稍微复杂的指令
-
script
执行控制端的一些脚本
-
copy
复制文件到被控端
-
fetch
从被控主机获取文件
-
file
设置文件属性
examples:
#创建空文件 ansible all -m file -a 'path=/data/test.txt state=touch' ansible all -m file -a 'path=/data/test.txt state=absent' ansible all -m file -a 'path=/data/test.txt owner=wang mode=755' # 创建目录 ansible all -m file -a 'path=/data/mysql state=directory owner=wang group=mysql'
-
unarchive
解包解压缩
实现有两种用法:
- 将ansible主机上的压缩包传到主机后解压到特定目录,设置copy=yes
- 将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no
-
archive
打包压缩
-
hostname
管理主机名
ansible node1 -m hostname -a 'name=web1'
-
cron
计划任务 支持时间有:minute,hour day ,month,weekday
-
yum
管理软件包
ansible all -m yum -a 'name=httpd state=present' #安装 ansible all -m yum -a 'name=httpd state=absent' #删除
-
service
启动 关闭服务
ansible all -m service -a 'name=httpd state=stared enable=yes' ansible all -m service -a 'name=httpd state=stopped' ansible all -m service -a 'name=httpd state=reloaded' ansible all -m service -a 'name=httpd state=restarted'
-
user
管理用户
ansible all -m user -a 'name=user1 comment "test user" uid=2048 home=/app/user1 group=root'
-
group
管理组
# 创建组 ansible all -m group -a 'name=nginx gid=88 system=yes' # 删除组 ansible all -m group -a 'name=nginx state=absent'
-
lineinfile
ansible在使用sed进行替换的时候进程会遇到需要转义的问题,而且ansible在遇到特殊符号的时候存在问题,无法正常进行替换 ansible提供了两个模块可以方便的进行替换 lineinfile和replace模块
功能 相当于sed 可以修改文件内容
-
replace
类似sed命令 主要也是基于正则进行匹配和替换
-
setup
setup模块用来收集主机的系统信息 这些fact信息可以以变量的形式使用,但是如果主机较多,会影响执行速度,可以是哦用gather_facts: no 来禁止ansible手机facts信息