• 欢迎访问运维搬运工网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 本站一年会员:100元 ,两年会员:180元 ,永久会员:380元
  • 这世界就是,一些人总在昼夜不停地运转,而另外一些人,起床就发现世界已经变了。
  • 本博客推广的是知识付费,用赞助的方式实现博客维护,不以赚钱为目的的博客

Ansible常用模块

ping模块

检查主机是否在线,如果主机在线则回复pong

示例:
ansible all -m ping //如果不需要检查全部主机,可将all改为定义的组名或单>独ip

yum模块

使用yum软件包管理器管理软件包,其选项有:
– config_file:yum的配置文件 (optional)
– disable_gpg_check:关闭gpg_check (optional)
– disablerepo:不启用某个源 (optional)
– enablerepo:启用某个源(optional)
– name:要进行操作的软件包的名字,默认最新的程序包,指明要安装的程序包,可以带上版本号,也可以传递一个url或者一个本地的rpm包的路径
– state:状态(present,absent,latest),表示是安装还卸载
present:默认的,表示为安装
lastest: 安装为最新的版本
absent:表示删除

示例:
ansible all -m yum -a 'name=httpd state=lastest' //根据软件包名字安装
ansible all -m yum -a 'name=“@Development tools” state=present' //根据软件包安装
ansible all -m yum -a 'name=http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm state=present' //传递url安装

service模块

用于服务管理,如果你的系统是centos7就不要使用该模块了,因为centos7服务管理默认是systemctl
-arguments:给命令行提供一些选项
-enabled:是否开机启动yes/on,要求状态(state)和启动(enabled)中至少有一个
-name:必须项,服务名称
-runlevel:运行级别
-sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟
-state:对当前服务执行启动,停止、重启、重新加载等(started,stopped,restarted,reloaded)

示例:
ansible all -m service -a 'name=httpd state=started' //表示启动httpd服务
ansible all -m service -a 'name=httpd state=stopped' //表示关闭httpd服务
ansible all -m service -a 'name=httpd enabled=yes' //表示将httpd服务设为开机启动

user模块

user模块是请求的是useradd, userdel, usermod三个指令
-home:指定用户的家目录,需要与createhome配合使用。
-groups:指定用户的属组。
-uid:指定用户的uid。
-password:指定用户密码。 //注意!指定password参数时,不能使用明文密码,因为密码会被直接传送到被管理主机的/etc/shadow文件中,所以需将密码字符串进行加密处理,然后将得到的字符串放到password中即可。
-name:指定用户名。
-createhome:是否创建家目录yes/no。
-system:是否为系统用户。
-remove:当state=absent时,remove=yes表示连同家目录一起删除。
-state:present=创建,absent=删除
-shell:指定用户shell环境。
-append:如果没有指定group,append为yes,那么会添加到用户同名组,append设定为no,那么会添加到user组。如果指定了group,那么都会添加在指定的group组。
-generate_ssh_key:是否为相关用户生成ssh密钥,这不会覆盖现有的SSH密钥。
-ssh_key_bits:可选择指定要创建的ssh密钥中的位数。
-ssh_key_passphrase:设置ssh密钥的密码,如果没有提供密码,ssh密钥将默认没有密码。
-ssh_key_file:指定ssh密钥文件名(可选), 如果这是一个相对的文件名,那么它将是相对于用户的主目录。
-ssh_key_type:指定要生成的ssh密钥的类型(可选),可用的SSH密钥类型将取决于目标主机上的实现。

示例:
ansible all -m user -a 'name=macro shell=/bin/shell groups=macro456 state=present' //用户名=macro,shell环境=bash,用户组=macro456
ansible all -m user -a 'name=macro state=absent remove=yes' //删除用户
ansible all -m user -a "name=macro123 shell=/bin/shell generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa" //新建用户并创建sshkey

group模块

-gid:指定用户的gid。
-name:指定组名。
-state:创建=present,删除=absent。
-system:如果等于yes,则表示创建的组为系统组。

示例:
ansible all -m group -a “name=macro state=present”
copy模块:
copy模块用于将本地或远程机器上的文件拷贝到远程主机上。

-backup:若是相同文件,在覆盖之前会将原文件备份,注意!传输过程中copy模块会检查该文件的md5值,若md5值与目的主机的文件相同,backup选项就会不起作用。
-content:当使用content而不是src时,可以将文件的内容之际设置成指定的值。
-desc:复制到目标主机的绝对路径,如果原文件是一个目录,那该路径也必须是个目录。
-force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
-others:所有的file模块里的选项都可以在这样使用。

示例:
ansible all -m copy -a "src=test.txt backup=yes desc=/root"

file模块

file模块主要用于远程主机上的文件操作。

-force: 需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no。
-group:定义文件/目录的属组。
-mode:定义文件/目录的权限。
-owner:定义文件/目录的属主。
-path:必选项,定义文件/目录的路径。
-recurse:递归的设置文件的属性,只对目录有效。
-src:要被链接的源文件路径,只应用于state=link。
-dest:呗链接到的路径,只应用于state=link。
-state:directory:如果目录不存在则创建目录。
file:即使文件不存在,也不会创建。
link:创建软链接。
hard:创建硬链接。
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间。
absent:删除目录、文件或者取消链接文件。

示例:
ansible all -m file -a "path=/root/macro.txt owner=macro group=root mode=0755 state=touch" #创建文件,所属用户为macro,所属组为root,权限为755

ansible all -m file -a "src=/root/macro.txt dest=/root/macro state=link" #将刚创建的macro.txt文本链接到/root/macro下

ansible all -m file -a "path=/root/macro123 state=directory mode=777" #创建一个名为macro123的目录,权限为777

ansible all -m file -a "path=/root/macro state=absent" #删除刚创建的软链接,删除文件/目录同样方法

template模块

基于模版方式将一个文件复制到远程主机(格式是以jinja2的模版语言处理)
-backup:如果原目标文件存在,则先备份目标文件(类似于copy模块到backup参数)
-src:控制主机上的jinja2格式化模版的路径,这可以是相对路径或绝对路径
-dest:将模版复制到管理主机的目录/文件
-owner:目标文件属主
-group:目标文件属组
-mode:目标文件的权限模式,模式可以被指导为符号模式(例如,u+rwx,g=rw,o=r)

示例:
ansible all -m template -a "src=/srv/nginx.j2 dest=/etc/nginx.conf”
#将做好的模版文件替换为管理主机上的目录/文件,与copy模块同理,传输过程中会检查该文件的md5值,若md5值与目的主机的文件相同,将不会做任何操作。

[root@ansible ~]# ansible all -m template -a "src=/srv/nginx.j2 dest=/etc/nginx.conf"
172.16.47.159 | SUCCESS => {
"changed": true,
"checksum": "73469bd9c223d66cfb607eec2c1be09be9e3e027",
"dest": "/etc/nginx.conf",
"gid": 0,
"group": "root",
"md5sum": "a4c9ea3d8d375456e755edcc3e2c3ecb",
"mode": "0644",
"owner": "root",
"size": 12,
"src": "~None/.ansible/tmp/ansible-tmp-1529485644.53-114255598932213/source",
"state": "file",
"uid": 0
}
[root@ansible ~]# ansible all -m template -a "src=/srv/nginx.j2 dest=/etc/nginx.conf"
172.16.47.159 | SUCCESS => {
"changed": false,
"checksum": "73469bd9c223d66cfb607eec2c1be09be9e3e027",
"dest": "/etc/nginx.conf",
"gid": 0,
"group": "root",
"mode": "0644",
"owner": "root",
"path": "/etc/nginx.conf",
"size": 12,
"state": "file",
"uid": 0
}
观察上面输出发现第一次执行changed状态为true,第二次执行changed为false,可以发现第二次执行并没有成功

command模块

command模块接受命令名称后接空格分隔参数列表,给定的命令将在选定的节点上执行,它不会通过shell进行处理,像一些特殊字符,例如”<”,”>”,”|”,”;”和“&”将无法正常工作,如果需要用这些功能则需要调用shell模块。
-chdir:在运行该命令之前cd进入该目录

示例:
ansible all -m command -a ‘cat /etc/passwd’

shell模块

shell模块接受命令名称后接空格分隔参数列表,几乎与command模块完成一样,但通过远程节点上的shell(/bin/sh)运行命令。
-chdir:在运行该命令之前cd进入该目录
-executable:更改用于执行该命令的shell,可执行文件的绝对路径。

示例:
ansible all -m shell -a 'cat < ~/test.txt executable=/bin/bash’


运维搬运工 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Ansible常用模块
喜欢 (0)
[扫描二维码]
分享 (0)
大自然搬运工
关于作者:
不是路不平,而是你不行。到底行不行,看你停不停。只要你不停,早晚都能行。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址