3.4 user模块
管理用户的模块。
ansible-doc -s user #查看user模块包含的操作动作 复制代码
常用参数:
参数 | 说明 |
name | 用户名,必选参数。 |
state=present 或 absent | 创建账号或者删除账号,present表示 创建,absent 表示删除。 |
system=yes 或 no | 是否为系统账号。 |
uid | 用户uid。 |
group | 用户基本组。 |
groups | 用户附加组。 |
shell | 默认使用的登录shell |
move_home=yes 或 no | 如果设置的家目录已经存在,是否将已经存在的家目录进行移动。 |
password | 用户的密码,建议使用加密后的字符串。 |
comment | 用户的注释信息。 |
remove=yes 或 no | 表示当state=absent时,是否删除用户的家目录。即删除用户时,是否同时删除家目录。yes表示删除用户的家目录。 |
示例1:
ansible dbservers -m user -a 'name="test01"' #创建用户test01 ansible dbservers -a 'tail -1 /etc/passwd' #查看目标主机的用户账号文件 ansible dbservers -m user -a 'name="test01"' #再次执行相同命令,状态为success,而不是changed,因为user模块不具有幂等性。 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
示例2:
#删除用户test01,但保留家目录。删除家目录要加remove=yes ansible dbservers -m user -a 'name="test01" state=absent' ansible dbservers -a 'id test01' ansible dbservers -a 'ls /home' 复制代码
网络异常,图片无法展示
|
示例3:
#创建名称为qiangge的用户,uid为9526,添加附加组wheel ansible dbservers -m user -a 'name="qiangge" uid=9526 groups=wheel' ansible dbservers -a 'grep qiangge /etc/passwd' #之后为qiangge用户设置密码,并且让其不可登录系统。 ansible dbservers -m user -a 'name="qiangge" password="123456" shell="/sbin/nologin"' ansible dbservers -a 'grep qiangge /etc/passwd' ansible dbservers -a 'grep qiangge /etc/shadow' #删除用户qiangge,且删除家目录 ansible dbservers -m user -a 'name="qiangge" state=absent remove=yes' ansible dbservers -a 'id qiange' ansible dbservers -a 'ls /home' 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
3.5 group模块
管理用户组的模块。
注意:字符串类型的值建议加双引号,防止有空格。数字和布尔值不要加双引号。
ansible-doc -s group #查看group模块包含的操作动作 #创建mysql组,设置为系统组。 ansible dbservers -m group -a 'name="mysql" gid=306 system=yes' ansible dbservers -a 'tail -3 /etc/group' #创建用户test02,设置为系统用户,基本组设置为mysql组。 ansible dbservers -m user -a 'name="test02" uid=306 system=yes group="mysql"' ansible dbservers -a 'id test02' 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
3.6 copy模块
用于将本地文件复制到远程主机。
ansible-doc -s copy #查看copy模块包含的操作动作 复制代码
常用参数:
参数 | 说明 |
src | 指出源文件的路径(位于控制节点,即管理端),可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录。 |
dest | 指出复制文件的目标及位置,使用绝对路径,如果源是目录则目标也要是目录,如果目标文件已经存在会覆盖原有的内容。 |
mode | 指出复制时,目标文件的权限。 |
owner | 指出复制时,目标文件的属主。 |
group | 指出复制时,目标文件的属组。 |
content | 指出复制到目标主机上的内容,不能与src一起使用。 |
示例1:
#将本地的/etc/hosts文件,复制到远程主机的/data/目录下,并重命名为hosts.bak,文件属主设置为root、属组设置为mysql,权限设置为640。 ansible dbservers -m copy -a 'src=/etc/hosts dest=/data/hosts.bak owner=root group=mysql mode=640' ansible dbservers -a 'ls -l /data' #查看文件权限 复制代码
网络异常,图片无法展示
|
示例2:
#将helloworld写入远程主机的/data/hello.txt文件中 ansible dbservers -m copy -a 'content="helloworld" dest=/data/hello.txt' ansible dbservers -a 'cat /data/hello.txt' 复制代码
网络异常,图片无法展示
|
3.7 file模块
为远程主机创建/删除文件或目录,设置文件属性。
主要参数如下:
参数 | 说明 |
path | 指定远程服务器的路径,也可以写成"dest","name" |
state | 状态,可以将值设定为directory表示创建目录,设定为touch表示创建文件,设定为link表示创建软链接,设定为hard表示创建硬连接,设定为absent表示删除目录文件或链接 |
mode | 文件复制到远程并设定权限,默认file=644,directory=755 |
owner | 文件复制到远程并设定属主,默认为root |
group | 文件复制到远程并设定属组,默认为root |
recurese | 递归修改 |
src | 指的是目标主机上的源文件。与copy模块不同。 |
示例1:修改文件的属主、属组、权限等
ansible-doc -s file #查看file模块包含的动作 #修改文件的属主、属组、权限等。 ansible dbservers -m file -a 'path=/data/hosts.bak owner=test02 group=root mode=644' ansible dbservers -a 'ls -l /data' 复制代码
网络异常,图片无法展示
|
示例2:创建软链接文件
#设置/opt/passwd.link为/etc/passwd的链接文件。state=link表示创建软链接。 ansible dbservers -m file -a 'path=/opt/passwd.link src=/etc/passwd state=link' ansible dbservers -a 'ls -l /opt' #注意:src指的是目标主机上的源文件,与copy模块不同。 复制代码
网络异常,图片无法展示
|
示例3:创建和删除文件、目录
#创建一个文件 ansible dbservers -m file -a 'path=/data/aa.txt state=touch' ansible dbservers -a 'ls /data' #删除文件/data/aa.txt ansible dbservers -m file -a 'path=/data/aa.txt state=absent' ansible dbservers -a 'ls /data' #创建一个目录 ansible dbservers -m file -a 'path=/data/hr state=directory' ansible dbservers -a 'ls -l /data' 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
3.8 hostname模块
用于管理远程主机上的主机名。
ansible dbservers -m hostname -a 'name=myhost7-4' #修改dbservers组的主机名 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
3.9 ping模块
测试远程主机的连通性。
ansible all -m ping #测试所有主机的连通性 复制代码
网络异常,图片无法展示
|