Ansible--2.Ansible中的常用模块

unarchive

Ansible--2.Ansible中的常用模块

  • 前言
  • 一、Command模块
  • 二、Shell模块
  • 三、Copy模块
  • 四、Fetch模块
  • 五、File模块
  • 六、Archive与unarchive模块
  • 七、hostname、Cron模块
  • 八、yum_repository模块
  • 九、dnf模块
  • 十、service、firewalld模块
  • 十一、user、group 模块
  • 十二、lineinfile 模块
  • 十三、replace 模块
  • 十四、setup 模块
  • 十五、debug模块


前言

本章主要介绍ansible自动化部署主要模块进行介绍,包括command、shell、copy、fetch、file、archive、unarchive、cron、yum_repository、dnf、service、firewalld、user、group、lineinfile、replace、setup、debug等模块。


一、Command模块

常用参数:

常用参数 含义
chdir 执行命令前先进入到指定目录
cmd 运行命令指定
creates 如果文件存在将不运行
removes 如果文件存在在将运行
ansible westos1 -m command -a "touch /mnt/westosfile"

Ansible--2.Ansible中的常用模块_第1张图片

ansible westos1 -m command -a "rm -fr /mnt/westosfile"

Ansible--2.Ansible中的常用模块_第2张图片

chdir 进入目录执行操作

ansible westos1 -m command -a "touch /mnt/westosfile"
ansible westos1 -m command -a "chdir=/mnt rm -fr westosfile"		chdir 进入目录执行操作

Ansible--2.Ansible中的常用模块_第3张图片
creates,removes

ansible westos1 -m command -a "touch /mnt/westosfile"
ansible westos1 -m command -a "creates=/mnt/westosfile touch /mnt/westoslee"	file存在 后面的不执行
ansible westos1 -m command -a "removes=/mnt/westosfile touch /mnt/westoslee"	file存在 后面的执行

在这里插入图片描述
Ansible--2.Ansible中的常用模块_第4张图片
颜色代表信息:

绿色 执行成功但未对远程主机做任何更改
黄色 执行成功并对远程主机作改变
红色 执行失败

二、Shell模块

常用参数:

常用参数 含义
chdir 执行命令前先进入到指定目录
cmd 运行命令指定
creates 如果文件存在将不运行
removes 如果文件存在在将运行
executable 指定执行环境,默认为sh

executable=bash 指定shell运行

ansible westos1 -m shell -a "ps ax |grep $$"		$$表示当前shell
ansible westos1 -m shell -a "executable=bash ps ax |grep $$"	修改命令使用的shell

Ansible--2.Ansible中的常用模块_第5张图片
脚本运行

vim hostname.sh
ansible westos1 -m script -a './hostname.sh'		脚本执行

Ansible--2.Ansible中的常用模块_第6张图片


三、Copy模块

copy模块:主机向远程主机复制文件

常用参数 含义
src 源文件
dest 目的地文件
owner 指定目的地文件所有人
group
mode 指定目的地文件权限
backup=yes 当受控主机中存在文件时备份原文件
content 指定文本内容直接在受控主机中生成文件
ansible westos1 -m copy -a 'src=test.yml dest=/mnt/test.yml mode=1777'		复制本地文件到远程主机/mnt下 指定权限为1777

Ansible--2.Ansible中的常用模块_第7张图片

ansible westos1 -m copy -a 'src=test.yml dest=/mnt/westosfile mode=1777 owner=westos backup=yes'	如若重复则备份

Ansible--2.Ansible中的常用模块_第8张图片

ansible westos1 -m copy -a 'dest=/mnt/westos  mode=1777 owner=westos backup=yes content="hello westos"'	

Ansible--2.Ansible中的常用模块_第9张图片


四、Fetch模块

将远程主机的文件复制到ansible主机中,但不支持目录

ansible westos1 -m fetch -a "src=/mnt/westos dest=~/.ansible"	会复制整个目录 以ip为目录名

Ansible--2.Ansible中的常用模块_第10张图片
flat=yes 只负责负责文件,但需要给定文件名称

ansible westos1 -m fetch -a 'src=/mnt/westos dest=~/.ansible/westos flat=yes'	只复制文件,需要给定文件名

Ansible--2.Ansible中的常用模块_第11张图片


五、File模块

常用参数:

常用参数 含义
path 指定文件名称
state 指定操作状态
touch 建立
absent 删除
directory 递归
link 建立链接
hard 硬链接
mode 设定权限
owner 设定文件用户
group 设定文件组
src 源文件
dest 目标文件
recurse=yes 递归更改
ansible westos1 -m file -a 'path=/mnt/westos state=touch'	创建文件

Ansible--2.Ansible中的常用模块_第12张图片

ansible westos1 -m file -a 'path=/mnt/westos state=directory'	创建目录

Ansible--2.Ansible中的常用模块_第13张图片

ansible westos1 -m file -a 'path=/mnt/westos.link state=link src=/mnt/westos'	创建软连接
ansible westos1 -m file -a 'path=/mnt/westos.hard state=hard src=/mnt/westos'	创建硬链接

Ansible--2.Ansible中的常用模块_第14张图片

ansible westos1 -m file -a 'path=/mnt/westosdir/test state=touch'		
ansible westos1 -m file -a 'path=/mnt/westos mode=777'		修改目录权限
ansible westos1 -m file -a 'path=/mnt/westos mode=777 recurse=yes'	修改目录权限并且目录中子文件的权限

Ansible--2.Ansible中的常用模块_第15张图片
Ansible--2.Ansible中的常用模块_第16张图片


六、Archive与unarchive模块

archive压缩:

ansible westos1 -m archive -a 'path=/etc dest=/mnt/etc.tar.gz format=gz owner=westos mode=777'

Ansible--2.Ansible中的常用模块_第17张图片unarchive解压

ansible westos1 -m unarchive -a 'src=/mnt/etc.tar.gz dest=/mnt copy=no'		copy=no 表示压缩文件在远程主机中,yes表示压缩文件在ansible主机中

Ansible--2.Ansible中的常用模块_第18张图片


七、hostname、Cron模块

hostname 修改主机名称

ansible westos1 -m hostname -a 'name=westoshyl.westos.org'

Ansible--2.Ansible中的常用模块_第19张图片
cron模块 设定定时任务
常用参数:

常用参数 含义
minute 分钟
hour 小时
day
month
weekday
name 任务名称
job 任务脚本或命令
disabled yes 禁用计划任务
no 启动计划任务
state ansent 删除计划任务
ansible westos1 -m cron -a "job='echo hello westos' name=westoscron weekday=5"	建立定时任务,每周五执行一次
ansible westos1 -m shell -a 'cat /var/spool/cron/root'		查看定时任务目录

Ansible--2.Ansible中的常用模块_第20张图片

ansible westos1 -m cron -a "job='echo hello westos' name=westoscron weekday=5 disabled=yes" 删除定时任务

ansible westos1 -m shell -a 'cat /var/spool/cron/root'		删除定时任务的实质就是注释掉文件的相应行

Ansible--2.Ansible中的常用模块_第21张图片删除定时任务的实质就是注释掉文件的相应行。


八、yum_repository模块

配置软件仓库文件 /etc/yum.repos.d/*.repo
常用参数:

常用参数 含义
name 仓库名称
baseurl 指定源路径
description 仓库描述
file 仓库文件名称
enabled 是否启用仓库
gpgcheck 是否检测gpgkey
ansible-doc -l | grep yum
ansible-doc yum_repository | less	----> EXAMPLE 查询用例用法

Ansible--2.Ansible中的常用模块_第22张图片ansible all -m shell -a 'rm -fr /etc/yum.repos.d/*.repo' 删除之前存在的配置文件
Ansible--2.Ansible中的常用模块_第23张图片

ansible all -m yum_repository -a 'name="AppStream" baseurl=http://172.25.9.254/westos/AppStream description=AppStream file=westos enabled=yes gpgcheck=no'	添加AppStream
ansible all -m yum_repository -a 'name="BaseOS" baseurl=http://172.25.9.254/westos/BaseOS description=BaseOS file=westos enabled=yes gpgcheck=no' 	添加BaseOS

Ansible--2.Ansible中的常用模块_第24张图片
Ansible--2.Ansible中的常用模块_第25张图片


九、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=present'	present代表下载

Ansible--2.Ansible中的常用模块_第26张图片

ansible all -m dnf -a 'name=httpd state=absent'	absent删除

Ansible--2.Ansible中的常用模块_第27张图片

ansible all -m dnf -a 'list=httpd'			列出

Ansible--2.Ansible中的常用模块_第28张图片


十、service、firewalld模块

service常用参数:

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

firewalld常用参数:

常用参数 含义
zone 火墙的域
service 服务名称
permanent 永久生效
state enabled 允许
disabled 拒绝
immediate 立即生效
ansible westos1 -m ping	查看ansible是否通畅
ansible westos1 -m dnf -a 'name=httpd state=present'	下载服务
ansible westos1 -m service -a 'name=httpd state=started enabled=yes'	开启服务		

Ansible--2.Ansible中的常用模块_第29张图片

ansible westos1 -m firewalld -a 'service=http permanent=yes state=enabled immediate=yes'	开启火墙,immediate为立即开启

Ansible--2.Ansible中的常用模块_第30张图片

ansible westos1 -m copy -a 'dest=/var/www/html/index.html content="hello westos"'	编辑默认发布页

Ansible--2.Ansible中的常用模块_第31张图片进入网页:172.25.9.100
Ansible--2.Ansible中的常用模块_第32张图片

如果不会,可以
ansible-doc service |less ----> 输入关键字查找


十一、user、group 模块

user、group模块可以对远程受控用户进行用户和用户组的增删查改。
user常用参数:

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

group常用参数:

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

受控主机设置监控:

watch -n 1 'tail -n 1 /etc/passwd /etc/group ;echo === ; ls -l /home/ ;echo === ;id westoslee'

Ansible--2.Ansible中的常用模块_第33张图片

ansible westos1 -m user -a 'name=westoslee state=present'		创建用户

Ansible--2.Ansible中的常用模块_第34张图片

ansible westos1 -m user -a 'name=westoslee group=1000 state=present'	修改主组

Ansible--2.Ansible中的常用模块_第35张图片

ansible westos1 -m user -a 'name=westoslee groups=1002 state=present'	修改附加组

Ansible--2.Ansible中的常用模块_第36张图片

ansible westos1 -m user -a 'name=westoslee groups=1001 state=present append=yes'	添加附加组

Ansible--2.Ansible中的常用模块_第37张图片

ansible westos1 -m user -a 'name=westoslee shell=/sbin/nologin'	指定shell
ansible westos1 -m user -a 'name=westoslee shell=/sbin/bash'

Ansible--2.Ansible中的常用模块_第38张图片

ansible westos1 -m user -a 'name=westoslee uid=1111'			修改uid

Ansible--2.Ansible中的常用模块_第39张图片

ansible westos1 -m user -a 'name=westoslee comment="westoslee user"'	修改注释

Ansible--2.Ansible中的常用模块_第40张图片

ansible westos1 -m user -a 'name=westoslee state=absent remove=yes'	删除用户并且删除家目录

Ansible--2.Ansible中的常用模块_第41张图片

ansible westos1 -m user -a 'name=westoslee state=present'		
openssl passwd -6				生成密钥
ansible westos1 -m user -a 'name=westoslee	 password="$6$cPCrv6u2Pqvp1CJ9$BJJBe2HQH69Yf.ukLN.gj8O0xAeUU44FXZqiiFALTz44RqrBqHMhnD0nJfMyqLESKwNQyzEtH4.v9vXXfhiYX0"'
					修改密码

Ansible--2.Ansible中的常用模块_第42张图片
Ansible--2.Ansible中的常用模块_第43张图片

ansible westos1 -m user -a 'name=westoslee generate_ssh_key=yes'	用户生成ssh密钥在~/.ssh/

Ansible--2.Ansible中的常用模块_第44张图片

ansible westos1 -m group -a 'name=test state=present'			创建组,也可指定gid=8888

Ansible--2.Ansible中的常用模块_第45张图片

ansible westos1 -m group -a 'name=test state=absent'			删除组

Ansible--2.Ansible中的常用模块_第46张图片


十二、lineinfile 模块

常用参数:

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

Ansible--2.Ansible中的常用模块_第47张图片

ansible westos1 -m lineinfile -a 'path=/mnt/test line="hello westos" regexp="^westos"'	匹配以westos开头的,并且修改添加hello,默认匹配不到也添加

Ansible--2.Ansible中的常用模块_第48张图片

ansible westos1 -m lineinfile -a 'path=/mnt/test line="hello westos" regexp="^westos" backrefs=no'

ansible westos1 -m lineinfile -a 'path=/mnt/test line="hello test" regexp="^westos" backrefs=yes'	匹配westos开头的行 添加hello test backrefs=yes匹配不到不添加

在这里插入图片描述

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


ansible westos1 -m lineinfile -a 'path=/mnt/westos regexp="(h.{4}).*(w.{5})" line="\1" backrefs=no'	\1代表regexp中的第一个字符串 如果backrefs=no则\1不生效

Ansible--2.Ansible中的常用模块_第49张图片

Ansible--2.Ansible中的常用模块_第50张图片

ansible westos1 -m lineinfile -a 'path=/mnt/westos line="end" insertafter=BOF'		结尾插入

Ansible--2.Ansible中的常用模块_第51张图片

ansible westos1 -m lineinfile -a 'path=/mnt/westos line="start" insertafter=BOF'		开头插入

Ansible--2.Ansible中的常用模块_第52张图片

nsible westos1 -m lineinfile -a 'path=/mnt/westos line="startaa" insertafter=BOF backup=yes'  备份

Ansible--2.Ansible中的常用模块_第53张图片
按列排放:
vim test.yml
Ansible--2.Ansible中的常用模块_第54张图片

ansible-playbook test.yml  执行剧本

Ansible--2.Ansible中的常用模块_第55张图片


十三、replace 模块

replace模块:字符替换

常用参数:

常用参数 含义
path 指定要操作的文件
regexp 指定一个正则表达式
文件中与正则匹配的字符串将会被替换。
replace 指定最终要替换成的字符串。
backup 是否在修改文件之前对文件进行备份,最好设置为yes
ansible westos1 -m replace -a "path=/mnt/westos regexp='westos' replace='WESTOS'"

Ansible--2.Ansible中的常用模块_第56张图片


十四、setup 模块

setup 模块 系统服务查看,用于手机远程主机的基本信息
常用参数:
filter :用于进行条件过滤。如果设置,仅返回匹配过滤条件的信息。

ansible westos1 -m setup | less 使用清单

Ansible--2.Ansible中的常用模块_第57张图片

ansible westos1 -m setup -a 'filter="ansible_all_ipv4_addresses"'	查看ip

Ansible--2.Ansible中的常用模块_第58张图片
剧本式查看:

vim test.yml

---
- name: test
  hosts: westos1
  tasks: 
  - name: test action
    debug:
      msg: "{{ansible_facts['date_time']['date']}}" 
ansible-playbook test.yml

Ansible--2.Ansible中的常用模块_第59张图片


十五、debug模块

debug 模块 相当于echo
常用参数:

常用参数 含义
msg: 调试输出的消息
var: 将某个任务执行的输出作为变量传递给debug模块
debug会直接将其打印输出
verbosity: debug的级别(默认是0级,全部显示)
ansible westos1 -m debug -a 'msg="hello westos"'	

Ansible--2.Ansible中的常用模块_第60张图片


你可能感兴趣的:(linux,运维)