Ansible实践篇(二):Ansible常用系统模块:ping、command、copy、yum、file、user
一、Ansible ping模块
Ansible最基础的模块是ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器,返回值是changed、ping
使用Ansible ping服务器状态,代码为ansible -k all -m ping
因为我的ansible服务器已经做了免密登录,所以不用到-k参数,关于ansible的各个参数在ansible原理篇里详解
结果如下:
二、Ansible command模块
Ansible command模块是Ansible默认模块,主要用于执行Linux基础命令,可以执行远程服务器命令执行、任务执行等操作。
但command模块不支持变量、重定向、管道符等,这些操作需要用shell模块执行
command模块使用详解:
- chdir:执行命令前,切换到目录
- creates:当该文件存在时,不执行该步骤
- executable:切换shell来执行命令,需要使用命令的绝对路径
- free_from:需要执行的脚本,一般使用Ansible的-a参数代替。
- removes:当该文件不存在时,不执行该步骤
- warn:如果在ansible.cfg中存在告警,如果设定了false,不会告警该行
(1)chdir示例
命令格式为ansible IP(可使用正则表达式) [-i hosts文件地址][-m module_name] -a module_args
如果hosts文件里面没有指定密码,还要使用-k参数
(2)creates示例
某一文件存在时,不执行命令[不知道为什么有warning。。。]
…
三、Ansible copy模块
Ansible copy模块主要用于文件或者目录复制,支持文件、目录、权限、用户组功能
copy模块使用详解:
- src:Ansible端源文件或者目录,空目录不复制
- content:用来替代src,用于将指定文件的内容复制到远程文件内
- dest:客户端目标目录或者文件,需要绝对路径
- backup:复制之前,先备份远程节点上的原始文件
- directory_mode:用于复制目录,新建的文件会被复制,而旧的不会被复制
- follow:支持link文件复制
- force:覆盖远程主机不一致的内容
- group:设定远程主机目录的组名
- mode:设定远程主机文件及目录的权限
- owner:设定远程主机目录的用户名
Ansible copy模块示例:
(1)Ansible copy模块操作,src表示源文件,dest表示目标目录或文件,owner指定拥有者
代码示例为:ansible IP -m copy -a 'src=/etc/passwd dest=/tmp mode=755 owner=root'
结果为:
(2)connect表示文件内容,dest表示目标文件,owner表示指定拥有者
代码示例为ansible IP -m copy -a 'content="HELLO" dest=/mnt/haha.txt mode=755 owner=root'
结果为:
(3)connect表示文件内容,dest表示目标文件,owner指定拥有者,backup=yes开启备份
代码示例为:ansible IP -m copy -a 'content="HAHA" dest=/mnt/haha.txt backup=yes mode=755 owner=root'
结果为:
四、Ansible yum模块
Ansible yum模块主要用于软件的安装、升级、卸载,支持rpm软件包的管理
yum模块使用详解:
- conf_file:设置远程yum执行时所依赖的yum配置文件
- disable_gpg_check:安装软件包之前是否检查gpg key
- name:需要安装的软件名称,支持软件组安装
- update_cache:安装软件之前更新缓存
- enablerepo:指定repo源名称
- skip_broken:跳过异常软件节点
- state:软件包状态,包括installed、present、latest、absent、removed
- present, installed是指安裝套件,而latest指安裝最新的套件,也就是使用 yum mirror 上最新的版本。
- absent, removed 没有什么区别
Ansible yum模块示例:
(1)name表示需要安装的软件名称,state表示状态,常见state=installed表示安装软件
示例代码为:ansible IP -m yum -a 'name=xxx state=installed'
结果为:
(2)state=absent表示卸载软件
(3)disable_gpg_check=no表示不检查key
六、Ansible user模块
Ansible user模块主要用于操作系统用户、组、权限、密码等操作
user模块使用详解:
- system:默认创建为普通用户,为yes则创建系统用户
- append:添加一个新的组
- comment:添加描述信息
- createhome:给用户创建家目录
- force:强制删除用户
- group:创建用户主组
- groups:将用户加入组或者附属组添加
- home:指定用户的家目录
- name:表示状态,是否create、remove、modify
- password:指定用户的密码,为加密密码
- remove:删除用户
- shell:设置用户的shell登录环境
- uid:设置用户ID
- update_password:修改用户密码
- state:用户状态,默认为present,表示新建用户
user模块示例
(1)name表示用户名称,home表示家目录
示例代码为:ansible 172.25.70.1 -m user -a "name=lcl home=/tmp/"
结果为:
(2)name表示用户名称,home表示家目录并指定shell
示例代码为:ansible 172.25.70.1 -m user -a "name=lcl home=/tmp/ shell=/sbin/nologin"
结果为:
(3)state=absent表示删除用户
示例代码为:ansible 172.25.70.1 -m user -a "name=lcl state=absent force=yes"
结果为: