大家好,这里是天亮之前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两个模块的案例供参考,由于模块太多,大家可自学查阅资料
“生活的方向无论你如何选择都会后悔,人总向往没经历过的生活”