shell脚本ansible执行不成功

shell脚本ansible执行不成功,第1张

无法获取环境变量。

由于使用ansible脚本批量化部署环境,网络环境走的代理,但是有些模块总是无法执行成功,最后经过排查是因为ansible远程连接通过ssh,无法获取环境变量,我的环境变量是在/etc/profile文件里。可以通过shell命令先导入环境变量。

    最近一直在练习ansible。以前觉得ansible繁琐,yml文件不熟悉,很难编写。但是在不断的练习中,笔者逐渐发觉Ansible这个框架真是省心省力。在多次实践中,各个模块其实可以直接ansible-doc查看模块的example,直接复制修改后就可以直接拿来使用。重难点其实还是playbook的逻辑控制上。

    在以前笔者觉得自己编写脚本(ssh后面直接跟命令)来完成服务器群的控制更加方便、简洁。但是熟悉ansible后发现,对于逻辑控制复杂的任务,ansible框架更加方便,特别是在错误判断上,真正的完成批量任务。

    在众多的实践练习中,笔者觉得生成主机hosts文件与cron任务比较常用,先分享如下。

    主机hosts文件一般包含IP地址和主机名,有时可以添加FQDN完全限定域名。

    jinja2模板中使用循环来获取使用主机的三个信息:address、fqdn、hostname。针对模板中的参数信息,可以使用setup模块先生成一个主机的使用信息到文件中,然后less打开生成的文本文件,搜索条目即可得到需要的参数信息。模板内容如下:

    下面的playbook使用template模板来生成主机文件,并将文件放置于dev组的主机 /etc/myhosts中。如果需要所有主机都需要生成,那么删除最后的when即可。

    配置 cron任务就简单了,ansible-doc cron查看模块的使用方法。

    下面是配置一个每两分钟的定时任务来发送logger日志 。配置完成后可以使用ansible test -a 'crontab -l -u bob' 来验证 ,或者查看日志记录 ansible test -a 'grep EX200 /var/log/messages' 。

    ansible-doc lineinfile查看模块的使用方法,模块确保”某一行文本”存在于指定的文件中,或者确保从文件中删除指定的”文本”,还可以根据正则表达式,替换”某一行文本”。

    下面是根据文本模板信息来更新硬件报告。

需要重新下载。

AnsibleInventory是包含静态Inventory和动态Inventory两部分的,静态Inventory指的是在文件中指定的主机和组,动态Inventory指通过外部脚本获取主机列表,并按照ansible所要求的格式返回给ansilbe命令的这部分一般会结合CMDB资管系统、云计算平台等获取主机信息由于主机资源一般会动态的进行增减,而这些系统一般会智能更新我们可以通过这些工具提供的API或者接入库查询等方式返回主机列表。

在执行kolla_ansible部署openstack之前,提前拉取镜像显得很有必要。

以上就是关于shell脚本ansible执行不成功全部的内容,包括:shell脚本ansible执行不成功、Ansible生成主机hosts文件、cron任务与硬件信息、python3.6环境下ansible拉取镜像失败等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9761231.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存