我使用ansible 1.5.4已经8个月了。昨天我发现1.5.4版本不支持mysql_repilcation模块的login_port。
这是该版本的一个错误,但它们支持最新版本(我认为> = 1.8)。但是我已经在1.5.4中运行了50多个ansible脚本 已在生产方面使用
最佳方案是什么:
如果我将1.5.4移至最新版本,是否会影响任何现有版本 ansible脚本
是否有可能通过shell命令实现欲望outout。
我被困在海洋中间。请帮我解决这个问题 问题
答案 0 :(得分:1)
- 如果我将1.5.4移至最新版本,它是否会影响任何现有版本 ansible script
醇>
这在很大程度上取决于你的剧本/角色,但我很确定它不会在没有变化的情况下工作。例如,我现在多次阅读用户在角色级别sudo
出现问题:
- roles:
- role: whatever
sudo: yes
这在1.9.1中被打破了。官方它是固定的但我读过用户仍有问题。通常sudo已被become取代。尽管仍然支持文档claims sudo,但显然不完全。
我记得的另一个变化是与ssh传输有关,但如果你在使用Ansible进行游戏时重新启动主机,你应该只是偶然发现这个问题。
我认为sudo /变成是最大的变化。如果你想避免麻烦并且不一定需要最近的版本,你可能只需要升级到1.9之前的版本,并且没有更改就有更好的机会。
如果你有时间,我建议你使你的游戏与最新版本兼容。 Ansible 2.0版本已经发布,它将引入许多新的非常有用的功能。
- 是否有可能通过shell命令实现欲望outout。
醇>
你的意思是自动转换你的剧本/角色?不,除非您完全了解问题并自己编写该脚本。 :)
我被困在海洋中间。请帮我解决这个问题
通常,您应首先在测试/暂存环境中测试每个新版本的Ansible。如果您没有测试主机,则可以设置本地VM。在那里,你可以测试和修复你的游戏。
答案 1 :(得分:0)
由于ansible 1.7版本不支持mysql_repilcation模块的login_port。我找到了实现结果的方法。
- name: "stop slaves of existing database server"
shell: >
mysql -uroot -p{{ mysql_exist_slave_database_password }} \
-P{{ default_port }} -h{{ default_host }} -e "stop slave" -s
- name: "Retrieve the Position and binary file number using slave
status"
shell: >
mysql -uroot -p{{ mysql_exist_slave_database_password }} \
-P{{ default_port }} -h{{ default_host }} -e "show slave
status\G" -s
register: output
- name: "start slaves of existing database server"
shell: >
mysql -uroot -p{{ mysql_exist_slave_database_password }} -P{{
default_port }} -h{{ default_host }} -e "start slave" -s