【Ansible】ad-hoc与常用模块

网友投稿 785 2022-05-30

什么是ad-hoc

ad-hoc 简而言之就是 “临时命令”,执行完即结束,并不会保存;

ansible工具通过 ssh 协议 ,实现对远程主机的配置管理,应用部署、任务执行等功能;

命令使用格式;

ansible [-m module_name] [-a args]

--version #ansible版本信息

-v #显示详细信息

-i #主机清单文件路径,默认是在/etc/ansible/hosts

-m #使用的模块名称,默认使用command模块

-a #使用的模块参数,模块的具体动作

-k #提示输入ssh密码,而不使用基于ssh的密钥认证

-C #模拟执行测试,但不会真的执行

-T #执行命令的超时

--become-user #指定sudo时的用户名称,默认为root

命令示例:

ansible 'groups' -m command -a 'df -h'

执行过程:

1.加载自己的配置文件,默认 /etc/ansible/ansible.cfg ;

2.查找对应的主机配置文件,找到要执行的主机或者组;

3.加载自己对应的模块文件,如 command ;

4.通过 ansible 将模块或命令生成对应的临时 py 文件,并将该文件传输至远

服务器对应执行用户 $HOME/.ansible/tmp/ansible-tmp-number/XXX.PY ;

5.执行用户家目录的 `` 文件;

6.给文件 +x 执行;

7.执行并返回结果;

8.删除临时 py 文件, sleep 0 退出;

执行状态

使用 ad-hoc 执行一次远程命令,注意观察返回结果的颜色;

绿色: 代表被管理端主机没有被修改

黄色: 代表被管理端主机发现变更

红色: 代表出现了故障,注意查看提示

常用模块

查看所有的模块

[root@manger ~]# ansible-doc -l

查看模块的详细文档

[root@manger ~]# ansible-doc copy

查看模块的所有方法

[root@manger ~]# ansible-doc -s copy

模块介绍

command模块

功能:在远程主机执行 Shell 命令;此为默认模块,可忽略 -m 选项;

chdir chdir /opt 执行ansible时,切换到指定的目录

creates creates /data/file 如果文件存在,则跳过执行

removes removes /data/file 如果文件存在,则执行

shell模块

功能:在远程主机执行 Shell 命令,执行管道等特殊符号的操作;

chdir chdir /opt 执行ansible时,切换到指定的目录

creates creates /data/file 如果文件存在,则跳过执行

removes removes /data/file 如果文件存在,则执行

script模块

功能:在被控节点,运行 Ansible 主机的脚本;

yum模块

功能:管理各个操作系统的软件包;

name: httpd、nginx、... 指定安装软件包名或软件包URL

state:present(Defaults)、absent、latest   指定yum对应的方法

enablerepo: epel、base、... 允许从哪些仓库获取软件

disablerepo :epel、base、... 禁止从哪些仓库获取软件

exclude :kernel、... 排除某些软件包

download_only: yes、no 仅下载软件包,不安装

copy模块

功能:从 ansible 服务端主控端复制文件到远程主机;

src 复制本地目录下的文件至远程服务器

dest 文件复制到远程的绝对路径

owner root(Defaults) 文件复制到远程并设定属主

group root(Defaults) 文件复制到远程并设定属组

mode file=644,directory=755 文件复制到远程并设定权限

backup yes 备份被修改前的配置文件

content 新建文件并给文件添加内容

file模块

功能:为被控端创建文件或目录,设定权限属性;

path 指定远程服务器的路径

recurse 递归方式(可以是递归授权)

state touch、directory、link、absent 文件复制到远程的状态

owner root(Defaults) 文件复制到远程并设定属组

group root(Defaults) 备份被修改前的配置文件

mode file=644,directory=755 文件复制到远程并设定权限

lineinfile模块

功能:修改或删除文件内容,与系统中的 sed 命令类似;

path 指定要操作的文件

regexp 使用正则表达式匹配对应的行

line 修改为新的内容

insertafter 将文本插入到“指定的行”之后

insertbefore 将文本插入到“指定的行”之前

state absent、present(Defaults) 删除对应的文本时,需要

state=absent

backrefs yes、no 1.支持后向引用、2.当未匹配到内容则不操作文件

backup 是否在修改文件之前对文件进行备份

create 当要操作的文件并不存在时,是否创建对应的文件

systemd模块

功能:管理服务启动与停止,与 service 模块用法一致;

name httpd、nginx、... 定义要启动服务的名称

state started、stopped、restarted、

reloaded 指定服务状态

enabled yes、no 允许服务开机自启或禁止服务开机自启

group模块

功能:管理被控端用户组;

name 指定创建的组名

gid 为组设置可选gid

state present(Default)、absent 是否将组创建在远程主机上

system yes、no(Default) 是否创建系统组

user模块

功能:管理被控端用户;

name 创建或删除的用户名

uid 为用户设置可选uid

group 为用户设置主要的组

groups 为用户设置附加的组

shell present(Default)、 absent 为用户设置登陆时的Shell

create_home yes(Default)、no 为用户创建主目录

state present(Default)、 absent 用户是否应该存在

remove yes、no(Default) 删除与用户关联的目录,只有当 state=absent时生效

generate_ssh_key yes、no(Default) 为相关用户生成ssh密钥。不会覆盖现有的ssh密钥

ssh_key_bits 2048 创建用户ssh密钥中位数

ssh_key_file .ssh/id_rsa(Default) 可以实现ssh密钥改名,或变更存放ssh密钥位置

【Ansible】ad-hoc与常用模块

cron模块

功能:管理被控端计划任务;

name 定时任务基本描述

job 定时任务要执行的命令

minute (Default)、0-59 分

hour (Default)、0-23 时

day (Default)、1-31 日

month (Default)、1-12 月

weekday (Default)、0-6 周

mount模块

功能:管理被控端设备挂载;

src 本地或远程设备的路径

path 设备挂载至本地的路径

fstype xfs、nfs... 文件系统类型

opts defaults、ro... 挂载的参数

state absent、mounted、unmounted 挂载的状态

hostname模块

功能:管理被控端主机名称;

archive模块

功能:打包与压缩;

path 要压缩的文件或目录

dest 压缩后的文件

format bz2、gz、tar、xz、zip 指定打包压缩的类型

unarchive模块

功能:解包与解压缩;

src 要解压的软件包路径

dest 解压到目标位置

remote_src yes、no(default) yes:要解压的包在被控端、no:要解压的包 在控制

selinux模块

功能:管理 SELINUX 防火墙;

state enforcing、permissive、disabled Selinux模式

ssh

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基础知识漫谈(1): 想到哪儿写到哪儿
下一篇:【激光雷达】认识点云库PCL
相关文章