[root@workstation ansible]# cat /etc/ansible/hosts
[myhosts]
192.168.1.110
192.168.1.111
模块 | 解释 |
---|---|
command | 默认模块,没有启用 shell ,所有shell 相关特性命令无法使用,例如 < > | & |
raw | 没有 chdir create remove 等参数,能执行大部分操作 |
shell | 启动 /bin/sh 运行命令,可以执行所有操作 |
copy | 从本机路径复制一个文件到远程目标主机路径下,可以指定权限 |
使用带有别名的命令试试
[root@ansible /]# ansible myhosts -m shell -a 'll'
192.168.1.111 | FAILED | rc=127 >>
/bin/sh: ll: 未找到命令non-zero return code
192.168.1.110 | FAILED | rc=127 >>
/bin/sh: ll: 未找到命令non-zero return code
定义在
~/.bashrc
或~/.bash_profile
中的环境变量shell模块由于没有加载,所以无法识别;如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句.
如果命令比较短可以一行写完
ansible myhosts -m shell -a "df -hT|sed '1d'|head -1"
如果命令比较多可以写成一个脚本,然后使用ansible把这个脚本推送到远程主机执行
cat /opt/shell/root.sh
#!/bin/bash
for i in {1..5}
do
user="haha$RANDOM"
useradd $user
echo "shenqi" |passwd --stdin $user
done
使用script模块执行root.sh脚本
ansible myhosts -m script -a "/opt/shell/root.sh"
文件名叫/tmp/haha,权限0644,所有者为apache,所属组wheel
ansible myhosts -m file -a "path=/tmp/haha mode=0644 owner=apache group=wheel state=touch"
文件夹叫/tmp/lala,权限2775(相当于sgid)
ansible myhosts -m file -a "path=/tmp/lala mode=2755 state=directory"
更改/tmp/haha权限为777,既可以是文件也可以是目录,不用加state
ansible myhosts -m file -a "path=/tmp/haha mode=0777"
把/tmp/haha给删除,如果指定的目录也可以被删除
ansible dev -m file -a "path=/tmp/haha state=absent"
path:要创建的链接文件,src:来自哪里,state:设置成link
ansible dev -m file -a "path=/tmp/hosts src=/etc/hosts state=link"
显示远程主机文件的超级详细的信息
ansible myhosts -m stat -a "path=/tmp/hosts"
name | 软件的名称 |
---|---|
state | 状态 |
latest,present,installed, | 这三个都代表的是安装 |
removed,absent | 卸载 |
安装http服务
ansible myhosts -m yum -a "name=httpd state=latest"
ansible myhosts -m get_url -a "url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/tmp/ mode=0440 force=yes"
如果force=yes,当下载文件时,如果所下的内容和原目录下的文件内容不一样,则替换原文件,如果一样,就不下载了。
如果为“否”,则仅在目标不存在时才下载文件。 一般来说,只有小型本地文件才应该为“是”。
在0.6之前,该模块表现为默认为“是”。
每天的14.30分执行一下echo hello
ansible myhosts -m cron -a "name='say hello' minute='30' hour='14' job='/usr/bin/echo hello'"
重启chronyd服务,并且开机启动
ansible myhosts -m service -a "name=chronyd state=restarted enabled=yes"
比如,我们想要启动远程主机中的httpd,则可以将 state 的值设置为 started;
如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped。
此参数的可用值有 started、stopped、restarted(重启)、reloaded。
enabled参数:
注:想使用service模块启动服务,被启动的服务,必须可以使用service 命令启动或关闭
开启路由转发
ansible -i /etc/ansible/hosts myhosts -m sysctl -a "name=net.ipv4.ip_forward value=1 reload=yes"
value设置它的值
reload 设置为yes就相当于sysctl -p
name | 用户名 |
---|---|
group | 用户的基本组 |
groups | 指定用户的附加组,多次指定会覆盖 |
append | 在原来的附加组基础上再加入新的组 |
shell | 用户默认登录的shell |
home | 用户的家目录 |
uid | 用户的id |
state | 用户状态:present目前、存在、创建,absent表示删除此用户 |
remove | yes|no 如果等于yes会连带删除用户的家目录,默认是no |
password | 指定用户的密码,但不能是明文,相当于/etc/shadow文件中密码字段 |
1.添加一个duolameng用户
ansible myhosts -m user -a "name=duolameng state=present"
[root@ansible ~]# ansible myhosts -m shell -a "id duolameng"
192.168.1.110 | SUCCESS | rc=0 >>
uid=1011(duolameng) gid=1011(duolameng) 组=1011(duolameng)
192.168.1.111 | SUCCESS | rc=0 >>
uid=1008(duolameng) gid=1008(duolameng) 组=1008(duolameng)
2.删除duolameng用户,但不删除家目录
ansible myhosts -m user -a "name=duolameng state=absent"
3.删除名为duolameng的用户,同时会删除duolameng用户的家目录等信息,如果已经不存在duolameng的用户,则不做任何操作。
ansible myhosts -m user -a "name=duolameng state=absent remove=yes"
4.指定duolameng用户的主组为admuser,admuser需要提前存在
ansible myhosts -m user -a "name=duolameng group=admuser"
5.把duolaameng用户加到组root,whell组里面去,并不覆盖原来的附加组
ansible myhosts -m user -a "name=duolameng groups=root,wheel append=yes"
6.设置duolameng用户的密码为ononon
方法1:
使用python的crypt模块
使用python的crypt模块
[root@ansible ~]#python
>>> import crypt
>>> crypt.crypt('ononon')
'$6$pRfiGx4eb6S3rUND$/4Rr9M8Z6TLZXnW5SzPj7PgqQDy6M5PiZTNt7ETKDim4i4e2wc0hoGmu.XsjN8Lp5FSG7EqXixmGgAS8fUC2P1'
设置duolameng的密码
ansible myhosts -m user -a "name=duolameng password=$6$pRfiGx4eb6S3rUND$/4Rr9M8Z6TLZXnW5SzPj7PgqQDy6M5PiZTNt7ETKDim4i4e2wc0hoGmu.XsjN8Lp5FSG7EqXixmGgAS8fUC2P1"
方法2:
ansible all -m user -a "name=duolameng password={{ 'shenqi' | password_hash('sha512') }}"
gid | 组id |
---|---|
name | 组名称 |
state | Present创建Absent删除 |
system | yes|no 是否为系统组 |
创建一个组为adminuser,gid为666
ansible myhosts -m group -a "name=adminuser state=present gid=666 system=yes"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。