Ansible 的常用模块

##1.ansible实现管理的方式##
Ad-Hoc        ##利用ansible命令直接完成管理,主要用于临时命令使用场景
playbook    ##ansible脚本,主要用于大型项目场景,需要前期的规划

##2.Ad-Hoc执行方式中如何获得帮助##
ansible-doc    ##显示模块帮助的指令

#格式
ansible-doc [参数] [模块...]

#常用参数
-l        ##列出可用模块
-s        ##显示指定模块的playbook片段

##3.ansible命令运行方式及常用参数

#格式:
ansible    清单    -m 模块    -a 模块参数

#常用参数
#--version        ##显示版本
#-m module        ##指定模块,默认为command模块
#-v            ##详细过程 -vv -vvv更详细过程
#--list            ##显示主机列表,也可以用--list-hosts
#-k            ##提示输入ssh连接密码,默认key认证
#-C            ##预执行检测
#-T            ##执行命令的超时时间,默认10s
#-u            ##指定远程执行的用户
#-b            ##执行sudo切换身份操作
#-become-user=USERNAME    ##指定sudo的用户
#-K            ##提示输入sudo密码


##4.ansible的基本颜色代表信
绿色        ##执行成功但为对远程主机做任何改变
黄色        ##执行成功并对远程主机做改变
红色        ##执行失败


##5.ansible中的常用模块##
#1.command#
#功能: 在远程主机执行命令,此模块为默认模块

#常用参数
chdir        ##执行命令前先进入到指定目录
cmd        ##运行命令指定
creates        ##如果文件存在将不运行
removes        ##如果文件存在在将运行
free_form    ##在远程主机中执行的命令,此参数不需要加
#实例
ansible all -m command -a "useradd lee" -u root -k
ansible all -m command -a "userdel -r lee" -u root -k
ansible all -m command -a "chdir=/etc cat passwd " -u root -k
ansible all -m command -a "chdir=/etc creates=/etc/passwd cat passwd " -u root -k
ansible all -m command -a "chdir=/etc removes=/etc/passwd cat passwd " -u root -k

##注意##
#Linux中的很多通配符在command模块中不支持


##2.shell##
#功能:
#和command功能类似
#常用参数
chdir           ##执行命令前先进入到指定目录
cmd             ##运行命令指定
creates         ##如果文件存在将不运行
removes         ##如果文件存在在将运行
free_form     ##在远程主机中执行的命令,此参数不需要加
executable    ##指定执行环境,默认为sh

#实例
ansible all -m shell -a "executable=sh ps ax | grep $$ "

##3.script##
#功能:
在ansible主机中写好的脚本在受控主机中执行

#实例
vim /mnt/westos.sh
#!/bin/bash
echo $HOSTNAME

ansible all -m script -a "/mnt/westos.sh" -k

##4.copy##
#功能
从ansible主机复制文件到受控主机

#常用参数
src        ##源文件
dest        ##目的地文件
owner        ##指定目的地文件所有人
group
mode        ##指定目的地文件权限
backup=yes    ##当受控主机中存在文件时备份原文件
content        ##指定文本内容直接在受控主机中生成文件

#实例ansible 172.25.254.239 -m copy -a "src=/home/lee/ansible/westis  owner=westos mode=755 dest=/mnt/westos "

ansible 172.25.254.239 -m copy -a "src=/home/lee/ansible/westis  owner=westos mode=755 dest=/mnt/westos backup=yes"

##5.fetch##
#功能
从受控主机把文件复制到ansible主机,但不支持目录

#常用参数
src        ##受控主机的源文件
dest        ##本机目录
flat        ##基本名称功能
#实例
ansible all -m fetch -a "src=/etc/hostname dest=/mnt" -k
ansible all -m fetch -a "src=/etc/hostname dest=/mnt flat=yes" 没有上层目录


##6.file##
#功能
设置文件的属性

#常用参数#
path        ##指定文件名称
state        ##指定操作状态
        ##touch        建立
        ##absent    删除
        ##directory     递归
        ##link        建立链接
        #hard        
mode        ##设定权限
owner        ##设定文件用户
group        ##设定文件组
src        ##源文件
dest        ##目标文件
recurse=yes    ##递归更改    

#example
ansible all -m file -a 'path=/mnt/test.sh state=touch'建立文件
ansible all -m file -a 'path=/mnt/test.sh state=absent'删除
ansible all -m file -a 'path=/mnt/westos state=directory'建立文件夹
ansible all -m file -a 'path=/mnt/westos state=directory mode=777   recurse=yes'  文件夹下的文件权限也是777
ansible all -m file -a 'src=/mnt/file dest=/mnt/westos state=link'软连接
ansible all -m file -a 'src=/mnt/file dest=/mnt/westos1 state=hard'硬链接
ansible all -m file -a 'path=/mnt/file state=touch owner=lee group=westos mode=777'建立文件用户时lee组是westos


##7.unarchive##
#功能
解压缩


#常用参数
copy        ##默认为yes 从ansible主机复制文件到受控主机
        ##设定为no  从受控主机中寻找src源文件
remote_src    ##功能同copy且相反
        ##设定为yes 表示包在受控主机
        ##设定为no表示包在ansible主机
src        ##包路径,可以使ansible主机也可以使受控主机
dest        ##受控主机目录
mode        ##加压后文件权限

#实例

ansible 172.25.254.239 -m unarchive -a 'src=/mnt/etc.tar.gz dest=/media owner=westos mode=755 copy=no'

##8.archive##
#作用
压缩

#常用参数
path        ##打包目录名称
dest        ##声称打包文件名称
format        ##打包格式
owner        ##指定文件所属人
mode        ##指定文件权限

#实例

ansible 172.25.254.239 -m archive -a 'path=/etc dest=/mnt/etc.tar.gz format=gz'

 

##hostname##
#作用
管理主机名称

#常用参数
name        ##指定主机名称

#实例
ansbile 172.25.254.100 -m hostname -a 'name=lee.westos.com'

##cron
#作用
计划任务

#常用参数
minute        ##分钟
hour        ##小时
day        ##天
month        ##月
weekday        ##周
name        ##任务名称
job        ##任务脚本或命令
disabled    ##yes 禁用计划任务
        ##no  启动计划任务
state        ##absent 删除计划任务

##实例##

ansible 172.25.254.239 -m cron -a "job='echo hello westos' name=test minute=*/2"

ansible 172.25.254.239 -m cron -a "job='echo hello westos' name=test minute=*/2 disabled=yes"

ansible 172.25.254.239 -m cron -a "job='echo hello westos' name=test minute=*/2 disabled=no"

ansible 172.25.254.239 -m cron -a "job='echo hello westos' name=test minute=*/2 state=absent"


##yum_repository##
#作用
配置系统软件仓库源文件

#常用参数
name        ##指定仓库名称
baseurl        ##指定源路径
description    ##指定仓库描述
file        ##指定仓库文件名称
enabled        ##仓库是否启用
gpgcheck    ##仓库是否检测gpgkey
state        ##默认值present 建立
        #absent    为删除
#实例

ansible 172.25.254.239 -m  yum_repository -a "file=westos name=AppStream baseurl=http://172.25.254.250/rhel8.2/AppStream description=AppStream enabled=yes gpgcheck=no state=present"

ansible 172.25.254.239 -m  yum_repository -a "file=westos name=BaseOS baseurl=http://172.25.254.250/rhel8.2/BaseOS description=BaseOS enabled=yes gpgcheck=no state=present"

##dnf##
#作用
管理系统中的dnf仓库及管理软件

#常用参数
name        ##指定包
state        ##指定动作
        #present    安装
        #latest        更新
        #absent        删除
list        ##列出指定信息
        # httpd    
        # installed
        # all
        # available
disable_gpg_check #禁用gpgkey检测
enablerepo    ##指定安装包来源
disablerepo    ##禁用安装包来源


##实例
ansible all -m dnf -a "name=httpd state=latest"
ansible all -m dnf -a 'name="httpd,mariadb-server" state=present'
ansible all -m dnf -a 'name=httpd state=absent'
ansible all -m dnf -a 'name=httpd state=absent autoremove=no'
ansible all -m dnf -a 'name=httpd state=present enablerepo=AppStream'
ansible all -m dnf -a 'name="*" state=latest'
ansible all -m dnf -a 'name=http://172.25.254.250/software/wps-office-xxx.rpm state=present'
ansible all -m dnf -a 'name="@Virtual Tools" state=present'

 

##service
#作用
管理系统服务状态

#常用参数
name        ##指定服务名称
state        ##指定对服务的动作
        #started
        #stoped
        #restarted
        #reloaded
enabled        ##设定服务开机是否启动
        #yes开启启动
        #no开机不启动

##实例
ansible all -m service -a "name=httpd state=started enabled=yes" -k        
ansible all -m service -a "name=httpd state=restarted enabled=yes" -k


##firewalld

#常用参数
zone        ##火墙的域
service        ##服务名称
permanent    ##永久生效
state        
  enabled    ##允许
  disabled    ##拒绝
immediate    ##立即生效
ansible 172.25.254.239 -m firewalld -a 'zone=public service=http permanent=yes state=enabled immediate=yes'

##user
#作用
模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作

#常用参数
name        ##必须参数,用于指定要操作的用户名称。
group        ##指定用户所在的基本组。
gourps        ##指定用户所在的附加组。
append        ##指定添加附加组默认值为no
shell        ##指定用户的默认 shell。
uid        ##指定用户的 uid 号。
comment        ##指定用户的注释信息。
state        ##用于指定用户是否存在于远程主机
        #present    建立
        #absent        删除
remove        ##当删除用户是删除用户家目录,默认值为no
password    ##此参数用于指定用户的密码。但密码为明文,
        ##可以用openssl password -6 '密码'生成加密字符
generate_ssh_key ##生成sshkey

##实例
ansible all -m user -a 'name=lee'
ansible all -m user -a 'name=lee state=absent'
ansible all -m user -a 'name=lee remove=yes state=absent'
ansible all -m user -a 'name=lee  group=888'
ansible all -m user -a 'name=lee  group=888 groups="user1,user2"'
ansible all -m user -a 'name=lee groups="user3"'
ansible all -m user -a 'name=lee groups="user1,user2" append=yes'
openssl passwd -6 'westos'
ansible all -m user -a 'name=lee password="$6$F4OBwqoXAigDV.dn$I2OgEPB3kfyl8CPmdh3Y8vKDqewZKrVMIDPPIt8GKnhs/DW4gZHfxrZX5ziQN7rVjISX7l14KwDQHEd.uprlV/"'
ansible all -m user -a 'name=lee generate_ssh_key=yes'


##group
#作用
group 模块可以帮助我们管理远程主机上的组。


#常用参数
name        ##用于指定要操作的组名称。
state        ##用于指定组的状态
        #present    建立
        #absent        删除
gid        ##用于指定组的gid。

##实例
ansible westos -m group -a 'name=testgroup gid=6666 state=present'
ansible westos -m group -a 'name=testgroup gid=8888'

ansible westos -m group -a 'name=testgroup gid=8888 state=absent'


 ##lineinfile

path        ##指定要操作的文件。
line        ##指定文本内容。 "|+" 表示格式化输入
regexp        ##使用正则表达式匹配对应的行当替换文本时
        ##如果有多行文本都能被匹配
        ##则只有最后面被匹配到的那行文本才会被替换
        ##当删除文本时,如果有多行文本都能被匹配
        ##这么这些行都会被删除。
state        ##当想要删除对应的文本时需要将state参数的值设置为absent
        #state的默认值为present。
backrefs    ##当内容无匹配规则时不对文件做任何更改,默认值为no
        ##向后引用regexp变量信息
insertafter    ##借助insertafter参数可以将文本插入到“指定的行”之后
        ##insertafter参数的值可以设置为EOF或者正则表达式
insertbefore    ##借助insertbefore参数可以将文本插入到“指定的行”之前
        #insertbefore参数的值可以设置为BOF或者正则表达式
backup        ##是否在修改文件之前对文件进行备份。
create        ##当要操作的文件并不存在时,是否创建对应的文件。

vim /mnt/westosfile
hello westos
hello test
hello linux

##实例

ansible westos -m lineinfile -a 'path=/mnt/westosfile line="hello westos\nhello linux" create=yes'

ansible westos -m lineinfile -a 'path=/mnt/westosfile regexp="^hello" state=absent'

 ansible westos -m lineinfile -a 'path=/mnt/westosfile regexp="^hello" line="hello westos"'

ansible westos -m lineinfile -a 'path=/mnt/westosfile regexp="^hello" line="hello redhat"'

ansible westos -m lineinfile -a 'path=/mnt/westosfile regexp="^hello" line="hello redhat1" backrefs=yes'

ansible westos -m lineinfile -a 'path=/mnt/westosfile regexp="(h.{4}).*(w.{5})" line="\1" backrefs=yes'

ansible westos -m lineinfile -a 'path=/mnt/westosfile line="###### westos end #####" insertafter=EOF '

ansible westos -m lineinfile -a 'path=/mnt/westosfile line="###### westos BEDIN #####" insertafter=BOF '

ansible westos -m lineinfile -a 'path=/mnt/westosfile line="######  BEDIN #####" insertafter=BOF backup=yes'

##line |+
lineinfile:
 path: /mnt/test
 line: |+
    westos
    linux
    lee
 create: yes

 

 

##replace
#作用
replace 模块可以根据我们指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换

#常用参数
path        ##指定要操作的文件
regexp        ##指定一个正则表达式
        #文件中与正则匹配的字符串将会被替换。
replace        ##指定最终要替换成的字符串。
backup        ##是否在修改文件之前对文件进行备份,最好设置为yes。

##实例
ansible westos -m replace -a 'path=/mnt/westosfile regexp="hello" replace="HELLO" backup=yes'

#setup#
#作用
setup模块用于收集远程主机的一些基本信息

#常用参数
filter        ##用于进行条件过滤。如果设置,仅返回匹配过滤条件的信息。


##实例
ansible all -m setup
ansible all -m setup   -a "filter='ansible_all_ipv4_addresses'"

#debug#
#作用

调试模块,用于在调试中输出信息

#常用参数:
msg:        ##调试输出的消息
var:        ##将某个任务执行的输出作为变量传递给debug模块
        ##debug会直接将其打印输出
verbosity:    ##debug的级别(默认是0级,全部显示)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部