Linux中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 abb'
ansible all -m command -a 'chdir=/mnt touch file file1'
ansible all -m command -a 'removes=/mnt/file chdir=/mnt  rm -fr file file1 '
 ansible all -m command -a 'chdir=/mnt touch file1'
ansible all -m command -a 'creates=/mnt/file chdir=/mnt  rm -fr file file1 '

##注意##
#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 /ansible/test.sh
#!/bin/bash
echo hello

ansible all -m script -a "/ansible/test.sh"

 

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

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

#实例

ansible 172.25.254.225 -m copy -a "src=/home/szy/ansible/test.sh owner=westos mode=755 dest=/mnt/test.sh"
ansible 172.25.254.225 -m copy -a "src=/home/szy/ansible/test.sh owner=westos mode=755 dest=/mnt/test.sh backup=yes"
ansible 172.25.254.225 -m copy -a 'content="hello westos" mode=755 dest=/mnt/westos backup=yes'

 

 

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

#常用参数
src        ##受控主机的源文件
dest        ##本机目录
flat        ##基本名称功能
#实例

ansible 172.25.254.225 -m fetch -a 'src=/etc/sysconfig/network-scripts/ifcfg-ens3 dest=/home/szy/ansible/ifcfg-ens3 flat=yes'

 

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

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

#example
ansible 172.25.254.225 -m file -a 'path=/mnt/westosfile state=touch'
ansible 172.25.254.225 -m file -a 'path=/mnt/westosfile state=absent'
ansible 172.25.254.225 -m file -a 'path=/mnt/westosdir state=directory'
ansible 172.25.254.225 -m file -a 'path=/mnt/westosdir/testfile state=touch'
ansible 172.25.254.225 -m file -a 'path=/mnt/westosdir state=directory mode=777  owner=westos group=devops recurse=yes'
ansible 172.25.254.225 -m file -a 'src=/mnt/file dest=/mnt/linuxfile state=link'
ansible 172.25.254.225 -m file -a 'src=/mnt/file1 dest=/mnt/westos1 state=hard'

 

 

 

 

 

##7.archive##
#作用
压缩

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

#实例

ansible 172.25.254.225 -m archive -a 'path=/etc dest=/mnt/etc.tar.gz format=gz mode=755 owner=westos group=westos'

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


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

#实例

ansible 172.25.254.225 -m unarchive -a 'src=/mnt/etc.tar.gz dest=/mnt copy=no'

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

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

#实例
ansible 172.25.254.225 -m hostname -a 'name=szy.westos.com'

 

 

##10.cron###
#作用
计划任务

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

##实例##

ansible 172.25.254.225 -m cron -a "job='echo hello' name=test disabled=yes minute=*/2"
ansible 172.25.254.225 -m cron -a "job='echo hello' name=test disabled=no minute=*/2"
 ansible 172.25.254.225 -m cron -a "job='echo hello' name=test state=absent minute=*/2"

 

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

#常用参数
name        ##指定仓库名称
baseurl        ##指定源路径
description    ##指定仓库描述
file        ##指定仓库文件名称
enabled        ##仓库是否启用
gpgcheck    ##仓库是否检测gpgkey
state        ##默认值present 建立
        #absent    为删除
#实例
ansible 172.25.254.225 -m yum_repository -a "name=AppStream baseurl=http://172.25.254.250/rhel8.2/AppStream description=AppStream gpgcheck=no enabled=yes file=westos"

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

 

 

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

#常用参数
name        ##指定包
state        ##指定动作
        #present    安装
        #latest        更新
        #absent        删除
list        ##列出指定信息
        # httpd    
        # installed 已经下载
        # all
        # available 未下载
         -a 'list=installed'
disable_gpg_check #禁用gpgkey检测
enablerepo    ##指定安装包来源
disablerepo    ##禁用安装包来源
autoremove      yes删除依赖性no不删除依赖性

##实例

 ansible all -m dnf -a 'name="*" state=latest'
 ansible 172.25.254.225 -m dnf -a 'name="httpd" state=present'
ansible 172.25.254.225 -m dnf -a 'name="httpd" state=absent'
 ansible 172.25.254.225 -m dnf -a 'name="httpd" state=present autoremove=no'
ansible 172.25.254.225 -m dnf -a 'name="httpd" state=present enablerepo=AppStream'
ansible 172.25.254.225 -m dnf -a 'name="httpd" state=present disablerepo=AppStream'
ansible 172.25.254.225 -m dnf -a 'name="httpd" state=present disable_gpg_check=yes'

 

 

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

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

##实例

ansible 172.25.254.225 -m service -a "name=httpd state=started enabled=yes"

 

 

##14.firewalld###

#常用参数
zone        ##火墙的域
service        ##服务名称
permanent    ##永久生效
state        
  enabled    ##允许
  disabled    ##拒绝
immediate    ##立即生效


ansible 172.25.254.225 -m firewalld -a 'zone=public service=http state=enabled immediate=yes'

 

 

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

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

##实例
watch  -n 1 "tail -n 4 /etc/passwd /etc/group /etc/shadow"

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=1001'
ansible all -m user -a 'name=lee  group=1001 groups="devops,apache"'

ansible all -m user -a 'name=lee groups="devops,apache" append=yes'
openssl passwd -6 'westos'
ansible all -m user -a 'name=lee $6$L01jjVCg.IiL8tdC$f7s8f/2nxcRK/DZ7JmqWQB6nUSZg3HoMdIMB2811EomZNw6xXB3tcAybWWHz96yoRmIDOUk07Sf5.A0GxvfzT."'
ansible all -m user -a 'name=lee generate_ssh_key=yes'

 

 

 

 

 

 

 

 

 

 

 

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


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

##实例

watch  -n 1 "tail -n 4 /etc/passwd /etc/group /etc/shadow"
ansible 172.25.254.225 -m group -a 'name=westoslee'
ansible 172.25.254.225 -m group -a 'name=westoslee state=absent'
ansible 172.25.254.225 -m group -a 'name=westoslee gid=8888'
 

 

 

 

 

 

 

##17.lineinfile###

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

##实例
ansible all -m lineinfile -a 'path=/mnt/westos line="hello westos"'
ansible all -m lineinfile -a 'path=/mnt/westos regexp="^westos" line="hello westos" '
ansible all -m lineinfile -a 'path=/mnt/westos regexp="^test" line="westos test"'
ansible all -m lineinfile -a 'path=/mnt/westos regexp='^test' line="westos test new" backrefs=yes'
ansible all -m lineinfile -a 'path=/mnt/westos regexp="(h.{4}).*(w.{5})" line="\1" backrefs=yes'
ansible all -m lineinfile -a 'path=/mnt/westos line="###### westos end #####" insertafter=EOF'
ansible all -m lineinfile -a 'path=/mnt/westos line="###### westos end lee #####" insertafter="hello"'
ansible all -m lineinfile -a 'path=/mnt/westos line="###### westos test #####" insertbefore=BOF'
ansible all -m lineinfile -a 'path=/mnt/westos line="###### westos test lee #####" insertbefore="hello"'

 

 

 

 

 

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

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

##实例
vim /mnt/westos
hello westos
hello test
hello linux

ansible all -m replace -a 'path=/mnt/westos regexp="westos" replace="WESTOS" backup=yes'

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

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


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

 

 

##20.debug###
#作用

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

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

ansible all -m debug -a "msg=aaa"
ansible all -m debug -a "msg=aaa verbosity=0"

相当于shell中的echo


vim test.yml

---
- name: test
  hosts: all
  vars:
    test: westos
  tasks:
    - name: make westosfile
      shell: /usr/bin/uptime
      register: info
      
    - debug:
          var: info


ansible-playbook test.yml

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值