Ansible概述和模块解释(你刚走过了今天,而扑面而来的却是昨天)(二)

简介: Ansible概述和模块解释(你刚走过了今天,而扑面而来的却是昨天)(二)

三、Ansible命令模块


命令格式: ansible <组名> -m <模块> -a <参数列表>

ansible-doc -l    #查询所有已安装的模块,按q退出


有三千多个模块,我们只需要学习常用的


3.1 command模块

在远程主机执行命令,不支持管道,重定向等shell的特性。

ansible-doc -s command      #-s 列出指定模块的描述信息和操作动作
ansible 192.168.109.131 -m command -a 'ifconfig'  #指定ip执行命令
ansible webservers -m command -a 'free'    #指定组执行命令
ansible dbservers -m command -a 'free'
ansible all -m command -a 'date'      #all代表所有 hosts 主机
ansible all -a 'date'        #如省略 -m 模块,则代表为默认的 command 模块
###常用用参数
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后而的操作




3.1.1 示例:chdir

[root@localhost opt]# ansible dbservers -m command -a 'chdir=/opt ls ./'
192.168.109.132 | CHANGED | rc=0 >>
rh


3.1.2 示例:creates

#判断指定文件是否存在,如果存在,不执行后面的操作
[root@localhost opt]# ansible dbservers -m command -a 'creates=/opt/123.txt echo helloworld >/opt/123.txt '
192.168.109.132 | CHANGED | rc=0 >>
helloworld >/opt/123.txt
#切换132机子查看
[root@localhost opt]# ls
123.txt  rh


3.1.3 示例:removes

#判断指定文件是否存在,如果存在,执行后而的操作
[root@localhost opt]# ansible dbservers -m command -a 'removes=/opt/123.txt touch /opt/123.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' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
192.168.109.132 | CHANGED | rc=0 >>
[root@localhost opt]# ansible dbservers -m command -a 'removes=/opt/123.txt rm -f /opt/123.txt'
[WARNING]: Consider using the file module with state=absent rather than running 'rm'.  If you need to use command because file is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
192.168.109.132 | CHANGED | rc=0 >>
[root@localhost opt]# ansible dbservers -m command -a 'removes=/opt/123.txt touch /opt/123.txt'
192.168.109.132 | SUCCESS | rc=0 >>
skipped, since /opt/123.txt does not exist


3.2 shell模块

在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell 下打开一个子shell运行命令(支持管道符号等功能)

ansible-doc -s shell
#写入helloworld到123.txt
[root@localhost opt]# ansible dbservers -m shell -a 'echo helloworld >/opt/123.txt '
192.168.109.132 | CHANGED | rc=0 >>
#过滤IP地址
[root@localhost opt]# ansible dbservers -m shell -a 'ifconfig ens33|awk "NR==2 {print \$2}"'
192.168.109.132 | CHANGED | rc=0 >>
192.168.109.132



3.3 cron模块

在远程主机定义任务计划,其中有两种状态(state):present表示添加(可以省略),absent表示移除。

ansible-doc -s cron     #查看相关说明,按q退出
常用参数:
minute/hour/day/month/weekday:分/时/日/月 /周
job:任务计划要执行的命令
name :任务计划的名称
#每两个月的10号的早上和晚上十点的第十分钟执行一次复制系统内核日志到/opt/
linux:10 10,22 10 */2 * /usr/bin/cp  /var/log/messages /opt
ansible:
[root@localhost opt]# ansible dbservers -m cron -a 'minute="10" hour="10,20" day="10" month="*/2" job="/usr/bin/cp  /var/log/messages /opt" name="test crontab"'
192.168.109.132 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "envs": [], 
    "jobs": [
        "test crontab"
    ]
}
#查看任务列表
[root@localhost opt]# ansible dbservers -a 'crontab -l'
192.168.109.132 | CHANGED | rc=0 >>
#Ansible: test crontab
10 10,20 10 */2 * /usr/bin/cp  /var/log/messages /opt
[root@localhost opt]# 
#切换到132机子上传查看
[root@localhost opt]# crontab -l
#Ansible: test crontab
10 10,20 10 */2 * /usr/bin/cp  /var/log/messages /opt



3.4 user模块

用户管理模块

ansible-doc -s user
常用的参数:
name :用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent 表示删除
system=yes|no:是否为系统账号
uid: 用户uid
group:用户基本组
groups:附加组
shell:默认使用的shell
move_home=yse|no:如果设置的家日录已经存在,是否将已经存在的家日录进行移动
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes|no:当state=absent时, 是否删除用户的家目录
ansible webservers -m user -a 'name="test001"'      #创建
ansible webservers -m command -a 'tail -1 /etc/passwd'    #查看确认
ansible webservers -m user -a 'name="test001" state=absent'   #删除
ansible webservers -m command -a 'tail -1 /etc/passwd'    #查看确认





3.5 group模块

用户组管理的模块


ansible-doc -s group    #查看相关文档
ansible dbservers -m group -a 'name=mysql gid=300 system=yes'
ansible dbservers -m command -a 'tail -1 /etc/group'
ansible dbservers -m user -a 'name="test002" uid=300 system=yes group=mysql'
ansible dbservers -m command -a 'tail -2 /etc/passwd'
ansible dbservers -a 'id test002'



3.6 copy模块

用于复制指定主机文件到远程主机上

ansible-doc -s copy    #查看相关文档
##常用参数
dest:指出复制文件的日标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限
owner:指出复制时,目标文件的属主
group:指出复制时,目标文件的属组
content:指出复制到目标主机上的内容,不能与src一起使用
##测试创建文件并修改权限
ansible dbservers -a 'mkdir /test'
ansible dbservers -m copy -a 'src=/etc/passwd dest=/test/passwd.bak owner=root mode=640'
ansible dbservers -a 'ls -l /test'
##测试创建文件并写入内容
ansible dbservers -m copy -a 'content="this is test txt" dest=/test/test.txt'
ansible dbservers -a 'ls -l /test'
ansible dbservers -a 'cat /test/test.txt'


目录
相关文章
|
3月前
|
缓存 Shell Linux
[ansible]常用内置模块
[ansible]常用内置模块
|
4月前
|
Shell 应用服务中间件 Linux
Ansible的常用模块
Ansible的常用模块
97 6
|
4月前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
43 1
|
4月前
|
运维 Linux 应用服务中间件
Linux之自动化运维工具ansible、ansible模块(2)
Linux之自动化运维工具ansible、ansible模块(2)
|
4月前
|
运维 Linux Shell
Linux之自动化运维工具ansible、ansible模块(1)
Linux之自动化运维工具ansible、ansible模块(1)
|
6月前
|
算法 安全 Linux
Ansible 中的copy 复制模块应用详解
Ansible 中的copy 复制模块应用详解
430 1
|
网络安全 数据安全/隐私保护
ansible的get_url模块
ansible的get_url模块
135 1
|
8天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
3天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
6天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
27 4