> 文章列表 > ansible自动运维——ansible使用临时命令通过模块来执行任务

ansible自动运维——ansible使用临时命令通过模块来执行任务

ansible自动运维——ansible使用临时命令通过模块来执行任务

大家好,这里是天亮之前ict,本人网络工程大三在读小学生,拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识,希望能提高自己的技术的同时,也可以帮助到大家

另外其它专栏请关注:

锐捷数通实验:锐捷数通实验

网络工程师成长日志:网络工程师成长日志

it自动化运维:it自动化运维

 之前说完了ansible的安装、配置和清单文件,今天说一下执行ansible使用临时命令通过模块执行任务。使用临时命令执行任务,不需要编写剧本即可运行,有一定的便利性,但是也有一定的局限性。

这里不得不提出我写的上一个博客:ansible自动运维——学会参考ansible-doc命令,本博客加上上一个博客一起学习,效果事半功倍。

一 ansible模块

通过ansible-doc -l 命令来查找系统安装的所有模块

1.1文件模块

copy:将本地文件复制到受控主机
file:设置文件的权限和其他属性
lineinfile:确保特定行是否在文件中,也就是说修改文件内容
synchronize:使用rsync同步内容

1.2 软件包模块

package:使用操作系统本机的自动检测软件包管理器管理软件包
yum:使用yum软件包管理器管理软件包
apt:使用apt软件包管理器管理软件包
dnf:使用dnf软件包管理器管理软件包
pip:从PyPI管理Python软件包

1.3 系统模块

firewalld:使用firewalld管理任意端口和服务
reboot:重新启动计算机
service:管理服务
user:添加、删除和管理用户账户

1.4 Net Tools模块

get_url:通过http、https或者ftp下载文件
nmcli:管理网络
uri:与WEB服务交互

1.5 语法

ansible 主机名称 -m 模块名称 -a ‘具体动作’ -i inventory路径
命令 主机名称 指定模块 模块名称 模块动作 具体命令

  • -m :用于将Ansible应再目标主机上运行的module的名称作为参数
  • -a :用于带引号字符串形式取这些参数的列表
  • -i :用于指定要使用的其它清单位置,取代ansible.cfg主配置文件中默认的inventory路径

二 copy模块

就将一个文件拷贝到所有的被控制节点上

2.1常用参数:

  • src参数 :用于指定需要copy的文件或目录。

  • dest参数 :用于指定文件将被拷贝到远程主机的哪个目录中,dest为必须参数。

  • content参数 :当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。

  • force参数 : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。

  • backup参数 : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。

  • owner参数 : 指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。

  • group参数 : 指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。

  • mode参数 : 指定文件拷贝到远程主机后的权限,如果你想将权限设置为”rw-r--r--“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。

2.2案例

  • copy模块将hello vrlab 字符串内容放到ansible被管理节点hello文件,设置hello文件的属主为root 属组为root 权限为550

 [student@workstation ansible]$ ansible -m copy -a "content='hello vrlab' dest=/opt/hello owner=root group=root mode=550" vrlab1

 检验:

  •  用copy模块将源文件传送到ansible被控制节点的vrlab组下面

[student@workstation ansible]$ ansible -m copy -a "src=/opt/vrlab123 dest=/opt/vrlab456"

三 user模块 

user就是用来创建用户,设置权限,创建组等等

3.1常用参数

  • name: 用于指定操作的 user,必须项。
  • uid: 用于指定 user 的 UID,默认为空。
  • non_unique: 与uid参数一起使用,允许改变UID为非唯一值。
  • group: 参数用于指定用户 主组。默认值为空,为空时创建的用户组名跟用户名一致。
  • groups: 参数用于指定用户属组,可以在创建用户时指定用户属组,也可以管理已经存在的用户属组。
  • append: 跟groups参数一起使用管理用户属组,默认为false,如果 append='yes' ,则从groups参数中增加用户的属组;如果 append='no' ,则用户属组只设置为groups中的组,移除其他所有属组。
  • state: 参数用于指定用户是否存在于远程主机中。可选值有 present、absent,默认值为 present。
  • remove: 参数在 state=absent 时使用,等价于 userdel --remove 布尔类型,默认值为 false。
  • force: 参数在 state=absent 时使用,等价于 userdel --force,布尔类型,默认值为 false。
  • home: 参数用于指定用户home目录,值为路径
  • create_home: 在用户创建时或home目录不存在时为用户创建home目录,布尔类型,默认值为 true
  • move_home: 如果设置为yes,结合home= 使用,临时迁移用户家目录到特定目录
  • comment: 参数用于指定用户注释信息
  • shell: 参数用于指定用户默认shell
  • system: 参数用于指定用户是否是系统用户
  • expires: 参数用于指定用户过期时间,相当于设置 /etc/shadow 文件中的的 第8列
  • passwd: 参数用于指定用户密码,但是这个密码不能是明文密码,而是一个对明文密码加密后的字符串,默认为空

3.2案例

在vrlab主机组上添加用户lmy

 检验:

 使用 ansible 在 控制节点上 创建test 用户,并指定主组为 testgrp

 首先创建使用ansible创建testgrp组

 使用ansible创建test用户

 验证:

 简单举出copy和user两个模块的案例供参考,由于模块太多,大家可自学查阅资料

 “生活的方向无论你如何选择都会后悔,人总向往没经历过的生活”