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'


目录
相关文章
|
4月前
|
缓存 Shell Linux
[ansible]常用内置模块
[ansible]常用内置模块
|
5月前
|
Shell 应用服务中间件 Linux
Ansible的常用模块
Ansible的常用模块
140 6
|
5月前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
55 1
|
5月前
|
运维 Linux 应用服务中间件
Linux之自动化运维工具ansible、ansible模块(2)
Linux之自动化运维工具ansible、ansible模块(2)
|
5月前
|
运维 Linux Shell
Linux之自动化运维工具ansible、ansible模块(1)
Linux之自动化运维工具ansible、ansible模块(1)
|
7月前
|
算法 安全 Linux
Ansible 中的copy 复制模块应用详解
Ansible 中的copy 复制模块应用详解
498 1
|
网络安全 数据安全/隐私保护
ansible的get_url模块
ansible的get_url模块
148 1
|
1月前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
23天前
|
运维 Ubuntu 应用服务中间件
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
|
21天前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。