将ansible 1.5.4版迁移到最新的ansible版本

时间:2015-08-04 11:33:48

标签: ansible ansible-playbook

我使用ansible 1.5.4已经8个月了。昨天我发现1.5.4版本不支持mysql_repilcation模块的login_port。

这是该版本的一个错误,但它们支持最新版本(我认为> = 1.8)。但是我已经在1.5.4中运行了50多个ansible脚本 已在生产方面使用

最佳方案是什么:

  1. 如果我将1.5.4移至最新版本,是否会影响任何现有版本 ansible脚本

  2. 是否有可能通过shell命令实现欲望outout。

  3. 我被困在海洋中间。请帮我解决这个问题 问题

2 个答案:

答案 0 :(得分:1)

  
      
  1. 如果我将1.5.4移至最新版本,它是否会影响任何现有版本   ansible script
  2.   

这在很大程度上取决于你的剧本/角色,但我很确定它不会在没有变化的情况下工作。例如,我现在多次阅读用户在角色级别sudo出现问题:

- roles:
   - role: whatever
     sudo: yes

这在1.9.1中被打破了。官方它是固定的但我读过用户仍有问题。通常sudo已被become取代。尽管仍然支持文档claims sudo,但显然不完全。

我记得的另一个变化是与ssh传输有关,但如果你在使用Ansible进行游戏时重新启动主机,你应该只是偶然发现这个问题。

我认为sudo /变成是最大的变化。如果你想避免麻烦并且不一定需要最近的版本,你可能只需要升级到1.9之前的版本,并且没有更改就有更好的机会。

如果你有时间,我建议你使你的游戏与最新版本兼容。 Ansible 2.0版本已经发布,它将引入许多新的非常有用的功能。

  
      
  1. 是否有可能通过shell命令实现欲望outout。
  2.   

你的意思是自动转换你的剧本/角色?不,除非您完全了解问题并自己编写该脚本。 :)

  

我被困在海洋中间。请帮我解决这个问题

通常,您应首先在测试/暂存环境中测试每个新版本的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