Ansible的常用模块
Ansible的执行
ad-hoc:临时的命令,执行后结束,不会保存,相当于Linux命令
使用场景
比如在多台机器上查看某个进程是否启动,或者拷贝指定文件到本地等
playbook:相当于Linux中的脚本
ad-hoc命令模式(语法)
命令格式 | ansible | web01 | -m | command | -a | ‘df-h‘ |
---|---|---|---|---|---|---|
格式说明 | 命令 | 主机名称 | 指定模块 | 模块名称 | 模块动作 | 具体命令 |
语法:
ansible 主机名(主机清单中的主机名或者主机组) -m 模块名 [-a 动作]
ad-hoc结果返回颜色
- 绿色: 代表被管理端主机没有被修改
- 黄色: 代表被管理端主机发现变更
- 红色: 代表出现了故障,注意查看提示
Ansible帮助手册
ansible-doc 模块名
command模块
ansible web_group -m command -a ‘命令(不带特殊符号)‘
# 例:
[root@m01 ~]# ansible web_group -m command -a ‘df -h‘
# 注:command不识别`|`管道符等符号
shell模块
ansible web_group -m shell -a ‘命令‘
# 例:
[root@m01 ~]# ansible web_group -m shell -a ‘ps -ef |grep nginx‘
script模块:远程执行脚本
# ansible远程执行脚本
# 例:
[root@m01 ~]# vim a.sh
useradd aaa
echo 123 |passwd --stdin aaa
[root@m01 ~]# ansible web_group -m script -a ‘/root/a.sh‘
# 查看是否执行成功
[root@web01 ~]# id aaa
uid=1000(aaa) gid=1000(aaa) groups=1000(aaa)
[root@web02 ~]# id aaa
uid=1000(aaa) gid=1000(aaa) groups=1000(aaa)
yum模块:软件管理模块
yum
- name:
- 直接指定包名: # 从仓库安装 yum install httpd
- http://:# 从指定的URL安装 yum install http://mirrors.aliyum.com/epel/http-1-1.rpm
- file://:# 从本地安装 类似 yum localinstall /root/http-1-1.rpm
- state
- absent:卸载
- present:安装
- lastest:最新安装
- download_only:
- true:只下载不安装
- false:下载并安装
- list
- 包名
"yumstate":"available":证明包可以安装但是没装
"yumstate":"installed":已经安装了
exclude=kernel*,foo* #排除某些包
list=ansible #类似于yum list查看是否可以安装
disablerepo="epel,ol7_1atest" #禁用指走的yum仓库
例:ansible all -m yum -a ‘name=tree state=absent‘
ansible软件管理模块:yum_repository
## 创建新的仓库配置文件
ansible db01 -m yum_repository -a ‘name=local description=xxx baseurl=file:///mntgpgcheck=no enabled=yes‘
## 创建新的仓库配置,并且文件名和仓库名不同
ansible web01 -m yum_repository -a ‘name=local file=zls_local description=xxx baseurl=file:///mnt gpgcheck=no enabled=yes‘
## 追加仓库
ansible lb01 -m yum_repository -a ‘name=test2_ansible file=test_ansibledescription=xxx baseurl=http://www.baidu.com‘
## 删除仓库
ansible lb01 -m yum_repository -a ‘name=test2_ansible file=test_ansible state=absent‘
yum_repository
- name:仓库名字(如果有file,只是仓库名,如果没有file,文件名和仓库名)
- file:指定仓库的文件名
- description:仓库的描述(name)
- baseurl:仓库的url
- gpgcheck:
- no:不开启 0
- yes:开启 1(默认)
- enabled:
- no:不开启 0
- yes:开启 1 (默认)
ansible文件管理模块:copy
## 远程推送文件
ansible nginx -m copy -a ‘src=/etc/passwd dest=/root‘
copy
- src:指定源文件的路径
- dest:指定目标路径
- owner:指定属主
- group:指定属组
- mode:指定权限
- backup:
- yes:如果目标路径,存在同名文件,就将目标文件备份
- no:不备份直接覆盖(默认)
- content:将指定文本内容覆盖到目标文件中
- remote_src:将命令变成cp
- yes:将源文件,编程远端的源文件(ansible被管理端)
- no:源文件还是本地文件(ansible管理端 默认)
- follow:拷贝软连接
- yes:会将软连接一起拷贝
- no:会生成一个新的软连接文件