Ansible Tower 踩坑

在使用Ansible Tower部署项目的时候,遇到不少坑,在这里做个记录:

  1. 在Ansible 中,使用playbook 写入task,如果遇到的task是shell脚本,写上绝对路径,因为在Ansible Tower 中,如果你使用gather_facts去获取Asible的shell 的path路径的时候,会发现是基于/home下的路径的,因此最好加上绝对路径,当然可以使用shell中的“chdir”,去更换路径之后再跑脚本。

  2. 在Ansible中,我们在自定义的脚本中写入了java -jar等命令的时候,将Java的环境变量配置到/etc/profile,在终端直接跑命令的时候是不会出错的但是将自定义脚本引入playbook中的task去执行的时候,会一直出现“Java command not found”的问题,这是因为你修改的是/etc/profile,而Ansible的shell的环境变量不会去跑/etc/profile里面的设置的东西,你可以尝试用一个task,去执行“echo $PATH”的命令的时候,会发现输出的完全不是我们自定义的path变量的值。这时候需要去配置~/.bashrc,/etc/bashrc,如果这个没有效果(我就是因为一直出错),后来直接在脚本中指定java的环境变量,这时候跑就成功了。(/spare/usr/bin/java -jar …..之类的)

  3. 在Ansible中,利用第二步消除了Java命令找不到的错误之后,发现这个进程在Ansible中看似跑成功了,但是实际上进程跑不起来,于是我往脚本中添加“&”,确保能够在终端结束后还能继续在后台运行,但是依旧没有成功。最后查找了,添加了“nohup”命令才能真正将进程跑起来。(nohup与&的区别可以见我之前的博文:https://blog.csdn.net/vivianxuejun/article/details/80157656)

  4. 在往Ansible中编写playbook的时候,注意将全局变量放在group_vars/all下,命名为vars.yml,其次要注意playbook的语法。

你可能感兴趣的:(运维)