Ansible有哪些常用模块(详细介绍使用方法!)

详细介绍使用方法!,Ansible有哪些常用模块。小编来告诉你更多相关信息。Ansible有哪些常用模块如果想了解Ansible有哪些常用模块的话题,很不错的方法小知识,建议收藏哦!一、简介前面我们介绍了,an

详细介绍使用方法!,Ansible有哪些常用模块。小编来告诉你更多相关信息。

Ansible有哪些常用模块

如果想了解Ansible有哪些常用模块的话题,很不错的方法小知识,建议收藏哦!

一、简介

前面我们介绍了,ansible能作为自动化配置管理,其实是由ansible的多种多样的模块来实现的。

截止目前,ansible的模块已经高达3000+之多,但是个人在日常工作中,比较常见的大约20多个。

下面不念就大概介绍一些常见常用的模块。

Ansible有哪些常用模块(详细介绍使用方法!)

Ansible有哪些常用模块,详细介绍使用方法!

二、invenroty清单文件

# cat /etc/ansible/hosts[websrvs]10.10.108.[30:33][dbsrvs]10.10.108.30[appsrvs]10.10.108.[30:33]

三、常用模块

3.1 ping 模块

ping模块执行成功后,会给你返回绿色的消息,并且有一个pong响应。all代表所有被管理的主机。

[root@bunian ansible-example]# ansible dbsrvs -m ping10.10.108.30 | SUCCESS => {    \"ansible_facts\": {        \"discovered_interpreter_python\": \"/usr/bin/python\"    },    \"changed\": false,    \"ping\": \"pong\"}[root@ayunw ansible-example]# ansible all -m ping10.10.108.30 | SUCCESS => {    \"ansible_facts\": {        \"discovered_interpreter_python\": \"/usr/bin/python\"    },    \"changed\": false,    \"ping\": \"pong\"}10.10.108.32 | SUCCESS => {    \"ansible_facts\": {        \"discovered_interpreter_python\": \"/usr/bin/python\"    },    \"changed\": false,    \"ping\": \"pong\"}10.10.108.31 | SUCCESS => {    \"ansible_facts\": {        \"discovered_interpreter_python\": \"/usr/bin/python\"    },    \"changed\": false,    \"ping\": \"pong\"}10.10.108.33 | SUCCESS => {    \"ansible_facts\": {        \"discovered_interpreter_python\": \"/usr/bin/python\"    },    \"changed\": false,    \"ping\": \"pong\"}

3.2 command 模块

因为ansible的默认模块是command,所以这里可以使用 -m 指定模块名 command,也可以直接省略。

[root@bunian ansible-example]# ansible dbsrvs -m command -a \"free -m\"10.10.108.30 | CHANGED | rc=0 >>              total        used        free      shared  buff/cache   availableMem:           7821         395        7110          16         314        7179Swap:          4095           0        4095[root@bunian ansible-example]# ansible dbsrvs -a \"free -m\"10.10.108.30 | CHANGED | rc=0 >>              total        used        free      shared  buff/cache   availableMem:           7821         395        7111          16         314        7179Swap:          4095           0        4095

3.3 shell模块

shell模块和command模块比较类似,但是shell被大家称为万能模块,很多操作command不支持,但是shell却支持。注意最后一种情况shell模块也是不支持的。但是可以将命令写在一个脚本,将脚本拷贝到远端执行,然后执行shell模块获取结果。

详细介绍使用方法!,Ansible有哪些常用模块。小编来告诉你更多相关信息。

Ansible有哪些常用模块

[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"touch /tmp/a.txt\"[WARNING]: Consider using the file module with state=touch rather than running \'touch\'.  If you need to use command because file is insufficient you can add \'warn: false\' tothis command task or set \'command_warnings=False\' in ansible.cfg to get rid of this message.10.10.108.30 | CHANGED | rc=0 >>[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"ls -al /tmp/ | grep \'a.txt\'\"10.10.108.30 | CHANGED | rc=0 >>-rw-r--r--.  1 root root   0 Aug  9 09:37 a.txt[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"ls -al /tmp/ | grep \"a.txt\"\"10.10.108.30 | CHANGED | rc=0 >>-rw-r--r--.  1 root root   0 Aug  9 09:37 a.txt# 会报错,shell万能模块也不支持这种方式[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"cat /etc/passwd |awk -F \':\' \'{print $1,$3}\' >> /tmp/pwd.txt\"10.10.108.30 | FAILED | rc=1 >>awk: cmd. line:1: {print ,}awk: cmd. line:1:        ^ syntax errorawk: cmd. line:1: {print ,}awk: cmd. line:1:         ^ syntax errorawk: cmd. line:1: {print ,}awk: cmd. line:1:          ^ unexpected newline or end of stringnon-zero return code

注意:你可能会注意到上面出现了WARNING警告。这不是报错,它只是告诉你,应该选择file模块进行创建文件的操作会更好,而不是使用shell模块操作。当然它还告诉你可以在ansible.cfg配置文件中设置command_warnings=False以关闭警告。

3.4 copy 模块

从ansible管理节点拷贝文件到远程主机。

[root@bunian ansible-example]# cat getPasswd.sh#!/bin/bash# -*- Author -*- : ayunwcat /etc/passwd |awk -F \':\' \'{print $1}\'[root@bunian ansible-example]# ansible dbsrvs -m copy -a \"src=getPasswd.sh dest=/usr/local/src/ mode=0755 owner=root group=root\"10.10.108.30 | CHANGED => {    \"ansible_facts\": {        \"discovered_interpreter_python\": \"/usr/bin/python\"    },    \"changed\": true,    \"checksum\": \"ce9c09f15cb6f62b550f819276d06b0e6cd59110\",    \"dest\": \"/usr/local/src/getPasswd.sh\",    \"gid\": 0,    \"group\": \"root\",    \"mode\": \"0755\",    \"owner\": \"root\",    \"path\": \"/usr/local/src/getPasswd.sh\",    \"secontext\": \"system_u:object_r:usr_t:s0\",    \"size\": 54,    \"state\": \"file\",    \"uid\": 0}# 默认目标节点存在文件会覆盖,所以最好设置 backup=yes[root@bunian ansible-example]# ansible dbsrvs -m copy -a \"src=getPasswd.sh dest=/usr/local/src/ mode=0755 owner=root group=root backup=yes\"[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"ls -al /tmp/ | grep \'getPasswd.sh\'\"10.10.108.30 | CHANGED | rc=0 >>-rw-r--r--.  1 root root  54 Aug  9 09:50 getPasswd.sh[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"cat /tmp/getPasswd.sh\"10.10.108.30 | CHANGED | rc=0 >>#!/bin/bashcat /etc/passwd |awk -F \':\' \'{print $1}\'[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"bash /usr/local/src/getPasswd.sh\"10.10.108.30 | CHANGED | rc=0 >>rootbindaemonadmlpsyncshutdownhaltmailoperatorgamesftpnobodysystemd-networkdbuspolkitdsshdpostfix# 拷贝目录下所有文件到远程,不包括目录本身。文件多了以后,速度会非常慢[root@bunian ansible-example]# ansible dbsrvs -m copy -a \"src=/etc/ansible/ dest=/opt/\"10.10.108.30 | CHANGED => {    \"changed\": true,    \"dest\": \"/opt/\",    \"src\": \"/etc/ansible/\"}

详细介绍使用方法!,Ansible有哪些常用模块。小编来告诉你更多相关信息。

Ansible有哪些常用模块

3.5 fetch 模块

从远程主机获取文件到ansible管理节点,但是不支持目录操作

[root@bunian ansible-example]# ansible dbsrvs -m fetch -a \"src=/etc/yum.repos.d/epel.repo dest=/usr/local/src\"10.10.108.30 | CHANGED => {    \"changed\": true,    \"checksum\": \"2feedd589b72617f03d75c4b8a6e328cc1aad918\",    \"dest\": \"/usr/local/src/10.10.108.30/etc/yum.repos.d/epel.repo\",    \"md5sum\": \"bddf35db56cf6be9190fdabeae71c801\",    \"remote_checksum\": \"2feedd589b72617f03d75c4b8a6e328cc1aad918\",    \"remote_md5sum\": null}[root@bunian ansible-example]# ls -al /usr/local/src/10.10.108.30/etc/yum.repos.d/total 4drwxr-xr-x. 2 root root  23 Aug 11 15:05 .drwxr-xr-x. 3 root root  25 Aug 11 15:05 ..-rw-r--r--. 1 root root 664 Aug 11 15:05 epel.repo

3.6 file 模块

# 创建软连接[root@bunian ansible-example]# ansible test -m file -a \'src=/etc/passwd path=/tmp/passwd.link state=link\'# 查看刚创建的/tmp下的软连接[root@bunian ansible-example]# ansible all -m shell -a \'ls -l /tmp/passwd.link\'# 创建文件。如果文件已经存在,则会更新文件的时间戳[root@bunian ansible-example]# ansible all -m file -a \'name=d.txt state=touch\'# 删除文件[root@bunian ansible-example]# ansible test -m file -a \'path=/tmp/cc.txt state=absent\'# 创建目录(可以递归创建,直接加上文件名即可)# 如果state=directory,那么如果目录不存在,那么所有的子目录将被创建(而且提供权限的创建),如果目录# 已经存在,则不进行任何操作。如果state=file,文件将不会被创建[root@bunian ansible-example]# ansible test -m file -a \'path=/tmp/bj state=directory\'# 删除目录(可以递归删除,无需任何参数,直接加上)[root@bunian ansible-example]# ansible test -m file -a \'path=/tmp/bj state=absent\'# 修改文件权限等属性[root@bunian ansible-example]# ansible test -m file -a \'path=/tmp/bb.txt mode=700 owner=root group=root\'# 递归授权目录权限 ansible dbsrvs -m file -a \"path=/data owner=bgx group=bgx recurse=yes\"

3.7 hostname 模块

管理远程主机上的主机名

# 查看主机名[root@bunian ansible-example]# ansible test -m shell -a \'hostname\'# 更改主机名[root@bunian ansible-example]# ansible test -m hostname -a \'name=master\'

3.8 yum 模块

# 安装一个httpd服务,默认安装最新版# 使用state=present来安装,多个包用\',\'分割[root@ansible-server ~]# ansible dbsrvs -m yum -a \'name=httpd\'[root@ayunw ansible-example]# ansible test -m yum -a \'name=httpd state=present\'# 检查是否安装成功[root@ansible-server ~]# ansible dbsrvs -a \'rpm -qi httpd\'

3.9 cron 模块

# 创建计划任务[root@bunian ansible-example]# ansible test -m cron -a \'minute=*/5 name=Ajob job=\"/usr/sbin/ntpdate 172.16.8.100 &> /dev/null\" state=present\'[root@bunian ansible-example]# ansible dbsrvs -m cron -a \"minute=* hour=* day=* month=* weekday=* job=\'/bin/sh test.sh\'\"[root@bunian ansible-example]# ansible dbsrvs -m cron -a \"job=\'/bin/sh /server/scripts/test.sh\'\"# 设置定时任务注释信息,防止重复,name设定ansible dbsrvs -m cron -a \"name=\'cron01\' job=\'/bin/sh /server/scripts/test.sh\'\"# 注释相应定时任务,使定时任务失效ansible dbsrvs -m cron -a \"name=\'ansible cron01\' minute=0 hour=0 job=\'/bin/sh test.sh\' disabled=yes\"# 删除相应定时任务(怎么创建的就要怎么删除)[root@bunian ansible-example]# ansible test -m cron -a \'minute=*/5 name=Ajob job=\"/usr/sbin/ntpdate 172.16.8.100 &> /dev/null state=absent\"\'# 查看计划任务[root@bunian ansible-example]# ansible test -m shell -a \"crontab -l\"172.16.20.115 | SUCCESS | rc=0 >>#Ansible: Ajob*/5 * * * * /usr/sbin/ntpdate 172.16.8.100 &> /dev/null # 删除任务计划[root@bunian ansible-example]# ansible test -m shell -a \"crontab -r\"

详细介绍使用方法!,Ansible有哪些常用模块。小编来告诉你更多相关信息。

Ansible有哪些常用模块

3.10 service 模块

用来管理服务器上的服务

# 利用ansible的yum模块安装一个nginx[root@bunian ansible-example]# ansible test -m yum -a \'name=nginx state=present\'# 启动nginx[root@bunian ansible-example]# ansible test -m shell -a \'/etc/init.d/nginx start\'# 或者利用ansible的service模块(推荐)[root@bunian ansible-example]# ansible test -m service -a \'name=nginx state=started\'# 查看状态[root@bunian ansible-example]# ansible test -m shell -a \'service nginx status\' [WARNING]: Consider using service module rather than running service# 停止nginx服务[root@bunian ansible-example]# ansible test -m service -a \'name=nginx state=stopped\'[root@bunian ansible-example]# ansible test -m shell -a \'service nginx status\' [WARNING]: Consider using service module rather than running service [root@bunian ansible-example]# ansible test -m service -a \'name=nginx state=started enabled=yes runlevel=2345\'[root@bunian ansible-example]# ansible test -m shell -a \'chkconfig --list nginx\'

3.11 group 模块

用于添加远程主机上的组

[root@bunian ansible-example]# ansible test -m group -a \'name=hr gid=2000 state=present\'

3.12 user 模块

管理远程主机上的用户的账号

# 创建用户指定uid和gid,不创建家目录也不允许登陆ansible dbsrvs -m user -a \"name=ayunw uid=888 group=888 shell=/sbin/nologin create_home=no\"[root@bunian ansible-example]# ansible dbsrvs -m user -a \'name=martin group=hr groups=root uid=500  shell=/bin/bash home=/home/martin comment=\"martin user\"\'# 删除用户[root@bunian ansible-example]# ansible dbsrvs -m user -a \'name=martin state=absent remove=yes\'# 给新创建的用户生成ssh密钥对ansible dbsrvs -m user -a \"name=oo uid=6677 group=adm generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa\" -i ./hosts# 将明文密码进行hash加密,然后进行用户创建ansible dbsrvs -m debug -a \"msg={{ \'123456\' | password_hash(\'sha512\', \'salt\') }}\"

3.13 setup 模块

可收集远程主机的facts变量的信息,相当于收集了目标主机的相关信息(如内核版本、操作系统信息、cpu、…),保存在ansible的内置变量中,之后我们有需要用到时,直接调用变量即可.这在ansible-playbook 中很有用。

[root@bunian ansible-example]# ansible dbsrvs -m setup# 使用setup获取ip地址以及主机名使用filter过滤ansible dbsrvs -m setup -a \'filter=ansible_default_ipv4\'# 获取内存信息ansible dbsrvs -m setup -a \'filter=ansible_memory_mb\'# 获取主机名ansible dbsrvs -m setup -a \'filter=ansible_nodename\'# 仅显示与ansible相关的内存信息ansible dbsrvs -m setup -a \'filter=ansible_*_mb\'

3.14 authorized_key模块

为特定的用户账号添加或删除SSHauthorizedkeys

详细介绍使用方法!,Ansible有哪些常用模块。小编来告诉你更多相关信息。

Ansible有哪些常用模块

# 方法一ansible web -m authorized_key -a \"user=root key=\'{{lookup(\'file\',\'/root/.ssh/id_rsa.pub\')}}\' path=/root/.ssh/authorized_keys manage_dir=no\"# 方法二、 vim pub_ssh_key.yml---- hosts: webs  remote_user: osmgr  become: yes  become_user: root  become_method: sudo  tasks:    - name: deliver authorized_keys      authorized_key:         user: osmgr        key: \"{{ lookup(\'file\', \'/home/osmgr/.ssh/id_rsa.pub\') }}\"        state: presentansible-playbook pub_ssh_key.yml

3.15 synchronize 模块

使用rsync模块,系统必须安装rsync包,否则无法使用这个模块

ansible dbsrvs -m shell -a \'yum -y install rsync\'ansible web -m synchronize -a \'src=time.sh dest=/tmp/\'

3.16 lineinfile 模块

正则匹配,更改某个关键参数值。比如这里修改SELINUX的值

ansible dbsrvs -a \'cat /etc/selinux/config | grep ^SELINUX=\' ansible dbsrvs -m shell -a \'cat /etc/selinux/config|grep \"^SELINUX=\"\'10.10.108.30 | CHANGED | rc=0 >>SELINUX=enforcing# 通过lineinfifle模块修改SELinux的配置信息,改为disableansible dbsrvs -m lineinfile -a \"path=/etc/selinux/config regexp=\'^SELINUX=\' line=\'SELINUX=disabled\'\"# 或者是使用ansible-playbookvim set_selinux_disable.yml---- hosts: dbsrvs  tasks:  - name: seline modify enforcing    lineinfile:      dest: /etc/selinux/config      regexp: \'^SELINUX=\'      line: \'SELINUX=enforcing\'# 删除/etc/fstab文件中以#号开头的行ansible dbsrvs -m lineinfile -a \"dest=/etc/fstab state=absent regexp=\'^#\'\"

3.17 replace 模块

和 sed 命令比较类似,用于正则匹配和替换

# 查看远端节点的 /etc/fstab 源文件[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"cat /etc/fstab\"10.10.108.30 | CHANGED | rc=0 >>## /etc/fstab# Created by anaconda on Tue Jul  5 14:09:37 2022## Accessible filesystems, by reference, are maintained under \'/dev/disk\'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/centos-root /                       xfs     defaults        0 0UUID=c47c20e8-8ed5-4d86-9209-f0e8876bb9e6 /boot                   xfs     defaults        0 0/dev/mapper/centos-swap swap                    swap    defaults        0 0# 使用replace模块[root@bunian ansible-example]# ansible dbsrvs -m replace -a \"path=/etc/fstab regexp=^(UUID.*) replace=\'#\\1\'\"10.10.108.30 | CHANGED => {    \"ansible_facts\": {        \"discovered_interpreter_python\": \"/usr/bin/python\"    },    \"changed\": true,    \"msg\": \"1 replacements made\"}# 查看结果[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"cat /etc/fstab\"10.10.108.30 | CHANGED | rc=0 >>## /etc/fstab# Created by anaconda on Tue Jul  5 14:09:37 2022## Accessible filesystems, by reference, are maintained under \'/dev/disk\'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/centos-root /                       xfs     defaults        0 0#UUID=c47c20e8-8ed5-4d86-9209-f0e8876bb9e6 /boot                   xfs     defaults        0 0/dev/mapper/centos-swap swap                    swap    defaults        0 0# 将注释的UUID信息恢复ansible dbsrvs -m replace -a \"path=/etc/fstab regexp=\'^#(.*)\' replace=\'\\1\'\"[root@bunian ansible-example]# ansible dbsrvs -m shell -a \"cat /etc/fstab\"10.10.108.30 | CHANGED | rc=0 >> /etc/fstab Created by anaconda on Tue Jul  5 14:09:37 2022 Accessible filesystems, by reference, are maintained under \'/dev/disk\' See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info/dev/mapper/centos-root /                       xfs     defaults        0 0UUID=c47c20e8-8ed5-4d86-9209-f0e8876bb9e6 /boot                   xfs     defaults        0 0/dev/mapper/centos-swap swap                    swap    defaults        0 0

参数说明:

  • \\1:表示引用前面的小括号内容

上述就是Ansible有哪些常用模块 跟 详细介绍使用方法的全面知识讲解,网小编希望能帮到您。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 203304862@qq.com 举报,一经查实,本站将立刻删除。本文链接:https://xz1898.com/n/285768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-09-18 22:07
下一篇 2023-09-18 22:09

相关推荐

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:97552693@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息