RHCE (1)ansible常用的模块

1、命令模块

1、command模块

  • 不支持特殊字符,< > | &等
[devops@controller ansible]$ ansible node -m command -a "touch /opt/file2.txt"

#不支持特殊字符
[devops@controller ansible]$ ansible node -m command -a "echo qqq > /opt/file2.txt"
node1 | CHANGED | rc=0 >>
qqq > /opt/file2.txt

node2 | CHANGED | rc=0 >>
qqq > /opt/file2.txt

2、shell模块

  • 万能的模块

  • chdir 指定工作目录

[devops@controller ansible]$ ansible node -m shell -a "chidr=/opt touch 11.txt"
node2 | CHANGED | rc=0 >>


node1 | CHANGED | rc=0 >>

3、raw模块

[devops@controller ansible]$ ansible node -m raw -a "touch /opt/file1.txt"
node1 | CHANGED | rc=0 >>
Shared connection to node1 closed.


node2 | CHANGED | rc=0 >>
Shared connection to node2 closed.

4、script模块

  • 将内容写入到脚本中,不需要可执行权限,就可以直接的使用
[devops@controller ansible]$ ansible node -m script -a "./1.sh"
node2 | CHANGED => {
    "changed": true,
    "rc": 0,
    "stderr": "Shared connection to node2 closed.\r\n",
    "stderr_lines": [
        "Shared connection to node2 closed."
    ],
    "stdout": "",
    "stdout_lines": []
}
node1 | CHANGED => {
    "changed": true,
    "rc": 0,
    "stderr": "Shared connection to node1 closed.\r\n",
    "stderr_lines": [
        "Shared connection to node1 closed."
    ],
    "stdout": "",
    "stdout_lines": []
}

2、常用模块

1、file模块

对于远程主机的文件进行操作的模块

1、file常见的选项
  • path 远程主机的路径,必选项

  • stat 对文件的动作

    • touch 创建文件,不存在,更新时间戳

    • dirctory 创建目录

    • file 查看文件状态,不存在会报错

    • absent 删除目录,文件,取消软连接

    • link 创建软连接

    • hard 创建硬链接

  • src 被链接的源文件路径,state=link,注意是被控节点上面的路径

  • dest 链接的目的路径,state=link

2、创建一个文件,做一个软连接,创建一个目录
[devops@controller ansible]$ ansible all -m file -a "path=/opt/file1.txt state=touch"

[devops@controller ansible]$ ansible all -m file -a "src=/opt/file1.txt dest=/mnt/file1.txt state=link"

[devops@controller ansible]$ ansible all -m file -a "path=/opt/d1 state=directory"
3、删除软连接文件和目录
[devops@controller ansible]$ ansible all -m file -a "path=/opt/file1.txt state=absent"

[devops@controller ansible]$ ansible all -m file  -a "path=/opt/d1 state=absent"

2、copy模块

拷贝文件到远程目录的

1、常见的选项
  • src 本地文件的路径

    • 如果目标是一个目录,会递归复制。路径以/结尾,会复制目录下所有的文件。不是以/结尾的话,会将本地目录原样的复制过去
  • dest 将源文件复制到被控节点路径

  • force 如果目标主机存在此文件,但内容不同的话,设置为yes,则强制覆盖,如果为no的话,则目标主机路径不存在该文件时,复制,默认为yes

  • backup 在覆盖之前做一个备份

  • content 替代src,直接指定文件内容

  • remote_src 将源文件改为被控节点上面的文件了,只是改变了src

2、copy使用
#将本地文件file1.txt拷贝到/opt下面
[devops@controller ansible]$ ansible all -m copy -a "src=/mnt/file1.txt dest=/opt/"


#源路径是一个目录,会递归的复制,目录不是一个这个/结尾的话,会将目录复制过去,以/结尾的话将目录下面的内容给拷贝过去
[devops@controller ansible]$ ansible all -m copy -a "src=/mnt dest=/opt"

#将被控节点的文件进行拷贝
[devops@controller ansible]$ ansible all -m copy -a "remote_src=yes src=/mnt/file1.txt dest=/opt/ "

3、yum_repository模块

1、yum_repository常用的选项
  • file 配置文件的名字,不用包含repo,写完会有的

  • name yum仓库的名字

  • description 仓库的描述信息

  • baseurl yum仓库的地址

  • enabled 是否开启这个yum仓库

  • gpgcheck 是否开启gpg检查

2、操作
[devops@controller ansible]$ ansible all -m yum_repository -a "file=local description=baseos  name=baseos baseurl=file:///media/BaseOS gpgcheck=0 enabled=1"

[devops@controller ansible]$ ansible all -m yum_repository -a "file=local description=appstream  name=appstream baseurl=file:///media/AppStream gpgcheck=0 enabled=1"

4、yum模块

1、yum常用的选项
  • name 指定要安装的软件包的名字

  • state 指定动作

    • present 安装

    • latest 最新版本

    • absent 删除

[devops@controller ansible]$ ansible all -m yum -a "name=httpd state=present"

[devops@controller ansible]$ ansible all -m yum -a "name=httpd state=absent"

5、service模块

1、service常用的选项
  • name 服务的名称

  • state 对服务执行的操作

  • enabled 是否开机自启

[devops@controller ansible]$ ansible node -m service -a "name=httpd state=started enabled=yes"

6、systemd模块

1、常用的选项
  • name 指定服务的名称

  • state 管理服务的状态

    • started,restarted,stopped,reloaded
  • daemon_reload 是否对服务的配置文件重载

  • enabled 是否开机自启

[devops@controller ansible]$ ansible node -m systemd -a "name=httpd state=stopped enabled=yes"

7、user模块

1、user常用的选项
  • name 用户名

  • state 创建还是删除

  • uid 用户的uid

  • group 指定用户组

  • groups 指定用户的附加组

  • comment 用户描述信息

  • create_home 是否给他创建home目录

  • home 指定home路径,需要配合create_home一起使用

  • shell 指定用户的环境

  • password 指定用户的密码,这里必须是加密后的密码,明文没有用

  • remove 删除用户时是否删除home目录

#生成一个加密的密码
openssl password -6
[devops@controller ansible]$ ansible node -m user -a "name=qq state=present  shell=/bin/bash"

[devops@controller ansible]$ ansible node -m user -a "name=qq state=absent remove=yes"

8、group模块

1、group常用的选项
  • gid 指定用户的gid

  • name 指定组名

  • state 组的动作,创建还是删除,present,absent

[devops@controller ansible]$ ansible node -m group -a "name=test gid=2024 state=present"

9、fetch模块

1、fetch常用的选项

将远程文件收集到本地,与copu相反

  • src 远程文件路径,只能是文件,不能是目录

  • dest 文件收集到本地的路径

  • flat 默认为no ,以被控节点的主机名显示目录结构,yes的话不以目标主机名来显示,直接以文件名来显示

#默认为no,以被控节点主机名来显示
[devops@controller ansible]$ ansible node -m fetch -a "src=/mnt/test dest=./"
node1 | CHANGED => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/home/devops/ansible/node1/mnt/test",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "remote_md5sum": null
}
node2 | CHANGED => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/home/devops/ansible/node2/mnt/test",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "remote_md5sum": null
}
[devops@controller ansible]$ ls
ansible.cfg  hosts  node1  node2  roles
[devops@controller ansible]$  ansible node -m fetch -a "src=/mnt/test dest=./ flat=yes"
[devops@controller ansible]$ ls
ansible.cfg  hosts  node1  node2  roles  test

10、get_url模块

从网上下载文件

1、get_url常见的选项
  • url 下载的url

  • url_password/url_username 主要用于用户名和密码验证的情况

  • dest 保存到本地的哪个地方

  • mode 给定权限

  • owner 拥有人

  • group 拥有组

#下载网络源地址
[devops@controller ansible]$ ansible node -m get_url -a "url=https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo dest=/tmp"

11、setup模块

收集被控节点的信息,用于写剧本非常的方便

[devops@controller ansible]$ ansible all -m setup > host.info.yaml

12、cron模块

用于设置定时任务的

1、cron常用的选项
  • name 计划任务的描述信息

  • minute = 每分钟 /1

  • job 计划任务,命令

  • user 计划任务的拥有人

  • cron_file 添加到配置文件中,/etc/crontab

[devops@controller ansible]$ ansible node -m cron -a 'name="nihao" hour='*\1' job="echo nihao" '
node2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "envs": [],
    "jobs": [
        "nihao"
    ]
}
node1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "envs": [],
    "jobs": [
        "nihao"
    ]
}

13、unarchive模块

  • 将本地的文件拷贝到被控节点上面去

  • remote_src=yes,就是在被控节点上面进行解压的操作,将被控节点上面的文件进行解压缩

  • src源文件

  • dest 被解压的路径

[devops@controller ansible]$ tar -czvf ./ansible/ansible.tar.gz ansible

[devops@controller ansible]$ ansible node -m unarchive -a "src=./ansible.tar.gz dest=/tmp"

14、synchronize模块

  • 同步的模块,将主控节点传送到被控节点上面去

  • 带了/的话就是将这个目录下面的内容都拷贝过去

  • 没有/这个的话,就是将这个目录拷贝到过去

  • mode 如果是pull的话,就是被控同步到主控上面

  • push的话就是主控到被控上面去

# 目录直接拷贝过去了
[devops@controller ansible]$ ansible node -m synchronize -a "src=/opt  dest=/opt"

# pull 将被控同步到主控上面
[devops@controller ansible]$ ansible node -m synchronize -a "src=/opt dest=/tmp/ mode=pull"

15、mount模块

  • src和path

  • state的选项

    • present 写入自动挂载,实际上没有挂载,需要重启才能实现挂载

    • mounted 写入自动挂载,直接挂载了

    • umounted 取消临时挂载,但是没有清理自动挂载

    • absent 取消临时挂载,并且清理自动挂载

  • fstype 挂载的类型

    • nfs,cifs,iso9660等
[devops@controller ansible]$ ansible node -m mount -a "src=/dev/cdrom path=/mnt/ state=mounted fstype=iso9660"


# 取消挂载
[devops@controller ansible]$ ansible  node -m mount -a "src=/dev/cdrom path=/mnt state=absent fstype=iso9660"

16、firewalld模块

  • service 服务的名称

  • permanent 是否永久添加,yes,no

  • immediate 是否立即生效

  • state

    • enabled 策略生效

    • disable 禁用策略

    • absent删除策略

# 永久放行http
[devops@controller ansible]$ ansible node -m firewalld -a "service=http state=enabled permanent=yes immediate=yes"

# 禁用http
[devops@controller ansible]$ ansible node -m firewalld -a "service=http state=disabled immediate=yes permanent=yes"

17、debug模块

  • 输出变量的模块
[devops@controller ansible]$ ansible all -m debug -a "msg=inventory_hostname"
node1 | SUCCESS => {
    "msg": "inventory_hostname"
}
node2 | SUCCESS => {
    "msg": "inventory_hostname"
}

18、分区相关的模块

1、parted模块
  1. 常见的选项

    • device 指定硬盘设备路径

    • label 指定分区表的类型,gpt,mbr类型的

    • part_start,分区起始的位置

    • part_end,分区结束位置

    • state 操作方式,present创建,absent删除

    • flage 指定粪污类型,lvm

2、lvg模块
  1. 常见选项

    • vg 卷组的名称

    • state 动作的状态,present,absent

    • force 在删除的时候,yes表示允许删除带逻辑卷的卷组,默认为false

    • pvs 指定物理卷

    • pesize 设定pe大小,默认为4

3、lvol模块
  1. 常见的选项

    • lv 定义逻辑卷名称

    • vg 逻辑卷的空间来自哪个vg

    • state present创建,absent

    • size 定义逻辑卷大小 默认mb

    • force 删除和压缩逻辑卷大小,默认为no,需要时开启,避免磁盘损失

4、filsystem模块
  1. 常见的选项

    • dev 要格式化的分区,主要不能带上/会报错的

    • fstype 文件系统类型

    • force 强制格式化

19、lineinfile模块

对一行的内容进行修改

  1. 常见的选项

    • path 修改的配置文件

    • regexp 过滤行,可以支持通配符,如果没有匹配到行的话,则在末尾添加行的内容

    • line 对匹配的行的内容进行修改,替换,如果匹配到的行都是一样的话,则修改最后一行的内容

    • insertbefore 在匹配行的前面进行插入

    • insertafter 在匹配行的后面进行插入

    • backrefs 默认是no,如果没有匹配到行的,则在末尾添加内容,如果是yes的话,匹配不到也不追加

    • state absent,会将匹配到的内容删除掉

    • create 默认是no,如果是ye,文件不存在则生成文件

    • backup 在修改前进行备份操作,yes备份

[devops@controller ansible]$ cat linefile/linefile.yaml 
- hosts: node
  tasks:
    - name: linefile
      lineinfile:
        path: /test.txt
        line: "qwert"
        regexp: "uuuuu"
        backup: yes

20、blockinfile模块

对多行的内容进行修改,也可以指定一个位置插入

  1. 常见的选项

    • 跟上面的一样

    • block 要插入的文本内容 | 为标记

    • marker 指定块的标记,不指定的话,默认生成

    • 根据标记的内容进行匹配然后修改

# 没有marker标记        
[devops@controller ansible]$ cat linefile/blockfile.yaml 
- hosts: node
  tasks:
    - name: blockfile
      blockinfile:
        path: /test.txt
        block: |
          aaa
          bbb
# 会自动的创建一个marker标记
[root@node1 /]# cat test.txt
qwert
asdfg
zxcvb
# BEGIN ANSIBLE MANAGED BLOCK
aaa
bbb
# END ANSIBLE MANAGED BLOCK



# 有marker标记
[devops@controller ansible]$ cat linefile/blockfile.yaml 
- hosts: node
  tasks:
    - name: blockfile
      blockinfile:
        path: /test.txt
        block: |
          ccc 
          ddd
        marker: "# RHCE {mark} ansible"

# 自定义这个标记
[root@node1 /]# cat test.txt
qwert
asdfg
zxcvb
# BEGIN ANSIBLE MANAGED BLOCK
aaa
bbb
# END ANSIBLE MANAGED BLOCK
# RHCE BEGIN ansible
ccc 
ddd
# RHCE END ansible

# 删除这个标记里面的内容
[devops@controller ansible]$ cat linefile/blockfile.yaml 
- hosts: node
  tasks:
    - name: blockfile
      blockinfile:
        path: /test.txt
        marker: "# RHCE {mark} ansible"
        state: absent

[root@node1 /]# cat test.txt
qwert
asdfg
zxcvb
# BEGIN ANSIBLE MANAGED BLOCK
aaa
bbb
# END ANSIBLE MANAGED BLOCK

21、get_url模块

将url的文件下载到被控节点上面去

[devops@controller ansible]$ ansible node -m get_url -a "url=http://www.baidu.com/index.html dest=/tmp"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值