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



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

那是那个版本的一个bug,但是他们在最新版本(>= 1.8)中支持。但我已经有超过50个可见的脚本运行在1.5.4已在生产端使用

最好的情况是什么:

  1. 如果我将1.5.4移动到最新版本,它会影响任何现有的ansible脚本

  2. 是否有可能通过shell命令实现期望输出

我被困在海洋中央。请帮我摆脱困境问题

  1. 如果我将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
    

    最新更新