我已经使用ansible 1.5.4 8个月了。昨天我发现在1.5.4版本中不支持mysql_replication模块的login_port。
那是那个版本的一个bug,但是他们在最新版本(>= 1.8)中支持。但我已经有超过50个可见的脚本运行在1.5.4已在生产端使用
最好的情况是什么:
-
如果我将1.5.4移动到最新版本,它会影响任何现有的ansible脚本
-
是否有可能通过shell命令实现期望输出
我被困在海洋中央。请帮我摆脱困境问题
- 如果我将1.5.4移动到最新版本,它会影响任何现有的ansible脚本
这在很大程度上取决于你的剧本/角色,但我很确定它不会没有改变就工作。例如,我现在读到很多次用户在角色级别上出现sudo
问题:
- roles:
- role: whatever
sudo: yes
在1.9.1中被打破了。官方是固定的,但我读到用户仍然有问题。通常sudo已被become取代。尽管文档声称仍然支持sudo,但显然并不完全支持。
我记得的另一个变化与ssh传输有关,但是如果你在玩Ansible时重启你的主机,你应该只会遇到这个问题。
我认为sudo/become的变化是最大的一个。如果你想避免这些麻烦,并且不一定需要最新的版本,你可以升级到1.9之前的版本,这样就有更好的机会不用修改就能通过。
如果你有时间,我建议你让你的游戏兼容最新的版本。Ansible 2.0版本即将发布,并将引入许多非常有用的新功能。
- 是否有可能通过shell命令实现期望的输出?
你的意思是自动转换剧本/角色?不,除非你找到问题所在并自己编写脚本。:)
一般来说,你应该首先在测试/登台环境中测试每个新版本的Ansible。如果没有测试主机,可以设置本地虚拟机。我被困在海洋中央。请帮我解决这个问题
由于mysql_replication模块的login_port在ansible 1.7版本中不支持。我找到了达到这个结果的方法。
- 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
statusG" -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