一 使用普通用户去执行ansible,配置文件如何配置
192.168.6.220:22 ansible_ssh_user=yx ansible_ssh_pass='123' ansible_sudo_pass='123'
172.2.0.231 ansible_ssh_port=8997
##可以指定端口,用户名,密码和sudo密码
使用sudo 加上-s
ansible 192.168.6.220 -s -m command -a "mkdir /root/dd.txt"
二 配置文件如何加密解密
# 加密
sudo ansible-vault encrypt /etc/ansible/hosts
# 解密
sudo ansible-vault decrypt /etc/ansible/hosts
##如何引用加密的文件,加-i 指定你文件的路径
sudo ansible test --ask-vault-pass -i /etc/ansible/hosts -m command -a 'date' #需要输入密码
三 设置在ploybook执行过程中显示所需时间
vim /etc/ansible/ansible.cfg
callback_whitelist= profile_tasks
然后执行ansible-playbook就显示时间了
如图:
四 亚马逊机器如何使用ansible
背景说明:亚马逊机器默认root用户禁止登录,并且是使用证书登录机器的,现在我想使用ansible批量操作机器,安装一个软件,但是默认只有root用户才可以安装,在不允许root用户登录的情况下,如何使用普通用户安装软件
安装脚本,在脚本里面切换root用户进行安装
sudo su root -c "cd /usr/share/fonts/Arial/windows/ && unzip front.zip"
sudo su root -c "sed -i '25 s#^#<dir>/usr/share/fonts/Arial/windows</dir>#' /etc/fonts/fonts.conf"
sudo su root -c "fc-cache fv"
然后执行即可 ansible app -m shell -a "/tmp/front.sh"
五 ansible参数介绍
-a MODULE_ARGS #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”等等
-k,--ask-pass #ask for SSH password。登录密码,提示输入SSH密码而不是假设基于密钥的验证
--ask-su-pass #ask for su password。su切换密码
-K,--ask-sudo-pass #ask for sudo password。提示密码使用sudo,sudo表示提权操作
--ask-vault-pass #ask for vault password。假设我们设定了加密的密码,则用该选项进行访问
-B SECONDS #后台运行超时时间
-C #模拟运行环境并进行预运行,可以进行查错测试
-c CONNECTION #连接类型使用
-f FORKS #并行任务数,默认为5
-i INVENTORY #指定主机清单的路径,默认为/etc/ansible/hosts
--list-hosts #查看有哪些主机组
-m MODULE_NAME #执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
-o #压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用
-S #用 su 命令
-R SU_USER #指定 su 的用户,默认为 root 用户
-s #用 sudo 命令
-U SUDO_USER #指定 sudo 到哪个用户,默认为 root 用户
-T TIMEOUT #指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u REMOTE_USER #远程用户,默认为 root 用户
-v #查看详细信息,同时支持-vvv,-vvvv可查看更详细信息
六用普通用户去执行脚本没权限怎么办
报错信息:
/tmp/mail.sh: line 1: /etc/mail.rc: Permission deniednon-zero return code
sudo ansible java -m shell -a 'sudo su root -c "/tmp/ssl.sh"'
就是在执行脚本的时候前面加上sudo su root即可