23 ansible模块2
Cron模块
功能:计划任务
支持时间:minute,hour,day,month,weekday
- 参数
参数 | 解释 |
---|---|
minute | 分钟 |
hour | 小时 |
day | 天 |
month | 月 |
weekday | 星期 |
job | 脚本路径 |
name | 定时任务名称 |
disabled | 是否启用 |
state | 状态:absent删除 |
- 范例1
[root@instance-gvpb80ao ~]# ansible public -m cron -a "minute=* job='echo date >> /root/ttt.log' name=test disabled=yes"
106.13.81.75 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"envs": [],
"jobs": [
"test"
]
}
[root@instance-gvpb80ao ~]# crontab -l
#Ansible: test
#* * * * * echo date >> /root/ttt.logCopy to clipboardErrorCopied
- 范例2
[root@instance-gvpb80ao ~]# ansible public -m cron -a "minute=* job='echo date >> /root/ttt.log' name=test disabled=yes state=absent"
106.13.81.75 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"envs": [],
"jobs": []
}
[root@instance-gvpb80ao ~]# crontab -lCopy to clipboardErrorCopied
Yum和Apt模块
yum 管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本。
apt 模块管理 Debian 相关版本的软件包。
- 参数
参数 | 解释 |
---|---|
name | 安装的服务的名字 |
state | 执行命令 present installed removed latest absent 其中installed and present等效 latest标志安装yum中最新版本,absent and removed 等效 表示删除安装包 |
disable_gpg_check | 用于禁用rmp包的公钥gpg验证,默认值no 表示不做验证 |
enablerepo | 用于指定安装软件包是临时启用的yum元 |
disablerepo | 用于指定安装软件包是临时禁止用的yum元 |
- 范例1
[root@instance-gvpb80ao ~]# ansible public -m yum -a "name=httpd state=present"
106.13.81.75 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"changes": {
"installed": [
"httpd"
]
},
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: langpacks, versionlock\nExcluding 1 update due to versionlock (use \"yum versionlock status\" to show it)\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.4.6-97.el7.centos will be installed\n--> Processing Dependency: httpd-tools = 2.4.6-97.el7.centos for package: httpd-2.4.6-97.el7.centos.x86_64\n--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-97.el7.centos.x86_64\n--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-97.el7.centos.x86_64\n--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-97.el7.centos.x86_64\n--> Running transaction check\n---> Package apr.x86_64 0:1.4.8-7.el7 will be installed\n---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed\n---> Package httpd-tools.x86_64 0:2.4.6-97.el7.centos will be installed\n---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n httpd x86_64 2.4.6-97.el7.centos updates 2.7 M\nInstalling for dependencies:\n apr x86_64 1.4.8-7.el7 base 104 k\n apr-util x86_64 1.5.2-6.el7 base 92 k\n httpd-tools x86_64 2.4.6-97.el7.centos updates 93 k\n mailcap noarch 2.1.41-2.el7 base 31 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package (+4 Dependent packages)\n\nTotal download size: 3.0 M\nInstalled size: 10 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal 14 MB/s | 3.0 MB 00:00 \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : apr-1.4.8-7.el7.x86_64 1/5 \n Installing : apr-util-1.5.2-6.el7.x86_64 2/5 \n Installing : httpd-tools-2.4.6-97.el7.centos.x86_64 3/5 \n Installing : mailcap-2.1.41-2.el7.noarch 4/5 \n Installing : httpd-2.4.6-97.el7.centos.x86_64 5/5 \n Verifying : httpd-2.4.6-97.el7.centos.x86_64 1/5 \n Verifying : apr-1.4.8-7.el7.x86_64 2/5 \n Verifying : mailcap-2.1.41-2.el7.noarch 3/5 \n Verifying : httpd-tools-2.4.6-97.el7.centos.x86_64 4/5 \n Verifying : apr-util-1.5.2-6.el7.x86_64 5/5 \n\nInstalled:\n httpd.x86_64 0:2.4.6-97.el7.centos \n\nDependency Installed:\n apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7 \n httpd-tools.x86_64 0:2.4.6-97.el7.centos mailcap.noarch 0:2.1.41-2.el7 \n\nComplete!\n"
]
}
[root@instance-gvpb80ao ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd(8)
man:apachectl(8)
[root@instance-gvpb80ao ~]# Copy to clipboardErrorCopied
Service模块
功能:管理服务。
- 参数
参数 | 解释 |
---|---|
name | 定义要启动服务的名称 |
state | started #启动服务 stopped #停止服务 restarted #重启服务 reloaded #重载服务 |
enabled | 开机自启 |
- 范例
#1.启动crond服务,并加入开机自启
[root@m01 ~]# ansible webservers -m service -a "name=crond state=started enabled=yes"
#2.停止crond服务,并删除开机自启
[root@m01 ~]# ansible webservers -m service -a "name=crond state=stopped enabled=no"
#3.重启crond服务
[root@m01 ~]# ansible webservers -m service -a "name=crond state=restarted"
#4.重载crond服务
[root@m01 ~]# ansible webservers -m service -a "name=crond state=reloaded"Copy to clipboardErrorCopied
User模块
功能:管理用户。
- 参数
参数 | 解释 |
---|---|
uid | 指定用户的uid |
group | 指定用户组名称 |
groups | 指定附加组名称 |
password | 给用户添加密码(记得单引号) |
shell | 指定用户登录shell |
create_home | 是否创建家目录 |
state | 用户状态:absent(删除) |
home | 家目录路径 |
system | 是否是系统用户 |
remove | 是否删除家目录数据:yes(删除) |
- 范例
[root@instance-gvpb80ao ~]# ansible public -m user -a "name=www uid=1200"
106.13.81.75 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"comment": "",
"create_home": true,
"group": 1200,
"home": "/home/www",
"name": "www",
"shell": "/bin/bash",
"state": "present",
"system": false,
"uid": 1200
}
[root@instance-gvpb80ao ~]# id www
uid=1200(www) gid=1200(www) groups=1200(www)Copy to clipboardErrorCopied
Group模块
功能:管理组。
#创建组
ansible public -m group -a 'name=nginx gid=88 system=yes'
#删除组
ansible public -m group -a 'name=nginx state=absent'Copy to clipboardErrorCopied
get_url模块
功能:下载模块(类似于wget)。
- 参数
参数 | 解释 |
---|---|
url | 下载的URL |
mode | 权限 |
dest | 下载的路径 |
checksum | md5值 |
timeout | 下载文件的超时时间 |
url_password | URL密码 |
url_username | URL用户 |
- 范例
[root@instance-gvpb80ao ~]# ansible public -m get_url -a 'url=https://repo.huaweicloud.com/etcd/v3.4.0-rc.4/etcd-v3.4.0-rc.4-linux-arm64.tar.gz mode=777 dest=/opt'
106.13.81.75 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum_dest": null,
"checksum_src": "c721f9904ff9c47cb34f304ee7d48eb99253e13a",
"dest": "/opt/etcd-v3.4.0-rc.4-linux-arm64.tar.gz",
"elapsed": 6,
"gid": 0,
"group": "root",
"md5sum": "0372460bbdf457166391e5e71c074f1c",
"mode": "0777",
"msg": "OK (15997556 bytes)",
"owner": "root",
"size": 15997556,
"src": "/root/.ansible/tmp/ansible-tmp-1621516877.39-15455-75914400512400/tmpbxzrIQ",
"state": "file",
"status_code": 200,
"uid": 0,
"url": "https://repo.huaweicloud.com/etcd/v3.4.0-rc.4/etcd-v3.4.0-rc.4-linux-arm64.tar.gz"
}Copy to clipboardErrorCopied
mount模块
功能:挂载目录。
- 参数
参数 | 解释 |
---|---|
src | 挂载IP及目录 |
path | 挂载的路径 |
fstype | 挂载的类型 |
opts | |
state | 挂载的状态 |
- state参数
参数 | 解释 |
---|---|
present | 开机挂载,仅将挂载配置写入/etc/fstab |
mounted | 挂载设备,并将配置写入/etc/fstab |
unmounted | 卸载设备,不会清除/etc/fstab写入的配置 |
absent | 卸载设备,会清理/etc/fstab写入的配置 |
- 范例
[root@m01 ~]# ansible web02 -m mount -a "src=172.16.1.7:/data path=/data fstype=nfs opts=defaults state=present"
[root@m01 ~]# ansible web02 -m mount -a "src=172.16.1.7:/data path=/data fstype=nfs opts=defaults state=mounted"
[root@m01 ~]# ansible web02 -m mount -a "src=172.16.1.7:/data path=/data fstype=nfs opts=defaults state=unmounted"
[root@m01 ~]# ansible web02 -m mount -a "src=172.16.1.7:/data path=/data fstype=nfs opts=defaults state=absent"Copy to clipboardErrorCopied
Setup模块
功能: setup 模块来收集主机的系统信息,这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度,可以使用 gather_facts: no 来禁止 Ansible 收集 facts 信息。
- 范例
ansible all -m setup -a "filter=ansible_nodename"
ansible all -m setup -a "filter=ansible_hostname"
ansible all -m setup -a "filter=ansible_domain"
ansible all -m setup -a "filter=ansible_memtotal_mb"
ansible all -m setup -a "filter=ansible_memory_mb"
ansible all -m setup -a "filter=ansible_memfree_mb"
ansible all -m setup -a "filter=ansible_os_family"
ansible all -m setup -a "filter=ansible_distribution_major_version"
ansible all -m setup -a "filter=ansible_distribution_version"
ansible all -m setup -a "filter=ansible_processor_vcpus"
ansible all -m setup -a "filter=ansible_all_ipv4_addresses"
ansible all -m setup -a "filter=ansible_architecture"
ansible all -m setup -a "filter=ansible_processor*"