/etc/ansible/ansible.cfg 主配置文件 ansible的配置文件
/etc/ansible/hosts Inventory 要远程控制的主机列表
/usr/bin/ansible-doc 帮助文件
/usr/bin/ansible-playbook 指定运行任务文件
默认: /etc/ansible/hosts
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成。
参考解释例子ansible_ssh_host将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.ansible_ssh_host=192.169.1.123ansible_ssh_portssh端口号.如果不是默认的端口号,通过此变量设置.ansible_ssh_port=5000ansible_ssh_user默认的 ssh 用户名ansible_ssh_user=cxpadminansible_ssh_passssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)ansible_ssh_pass=’123456’
ansible2.0,ansible_ssh_user, ansible_ssh_host, ansible_ssh_port已经改变为ansible_user, ansible_host, ansible_port。具体参考官网
http://docs.ansible.com/ansible/latest/intro_inventory.html
常见的模块及使用参考: ansible基本使用教程 - 陈小跑 - 博客园
命令行方式一次只能执行单条命令,如果命令量较多,可以使用playbook的方式。 https://segmentfault.com/a/1190000038230424
playbook使用yaml格式编写。组成结构如下:
举例如下:
使用参考: https://segmentfault.com/a/1190000038230424
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."
通常情况下,通过&指定的后台任务在终端退出后会自动退出执行。一般来说,加上nohup即可在后台一直执行。但在使用ansible时,发现 ansible all -m shell -a 'nohup cmd &' 命令无法在后台一直执行。后来想了个办法,将命令写入脚本,然后通过执行脚本来实现。
脚本内容为
ansible命令为 ansible all -m script -a 'bash xxx.sh' 。sleep的原因是退出太快可能脚本没跑起来就退出了。
首先,在脚本中添加echo $JAVA_HOME ,which java ,echo $(whoami),然后用ansible远程执行,发现为root用户但输出为空和找不到java其次,在~/.bash_profile中添加环境变量,用ansible远程执行脚本,发现依然输出为空和找不到java环境变量最后,考虑ansible执行的环境变量与登录时使用的环境变量不同,所以将JAVA_HOME写在/etc/bashrc中,用ansible远程执行脚本,发现执行正常; 至此,确定ansible执行过程中并未调用/etc/profile和~/.bash_profile
ansible远程执行的是non-login shell 并不会加载/etc/profile和~/.bash_profile下的环境变量,只加载~/.bashrc和/etc/bashrc 如果需要在ansible中执行需要特定环境变量的命令,将环境变量写在~/.bashrc ,然后source一下~/.bash_profile。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)