使用:Mac OS X 10.11.5、ansible 2.0.1.0、Python 2.7.11。Ubuntu Xenial LTS(Vagrant 1.8.1 和 VirtualBox 版本 5.0.16 r105871)作为遥控器。
我正在尝试使用 Ansible 将新的 gemset 设置为默认值,如下所示:
---
# file: roles/ruby-gemset/tasks/main.yml
- name: RVM | check if the bwv gemset needs to be set default.
command: rvm list gemsets
register: gemset_needs_an_update
environment:
PATH: "{{ rvm_path }}:{{ ansible_env.PATH }}"
GEM_HOME: "/usr/local/rvm/gems/ruby-{{ ruby_version }}"
GEM_PATH: "/usr/local/rvm/gems/ruby-{{ ruby_version }}@bwv:/usr/local/rvm/gems/ruby-{{ ruby_version }}@global"
changed_when: gemset_needs_an_update.stdout.find('=> ruby-{{ ruby_version }}@bwv') == -1
- name: RVM | Create and use ruby-{{ ruby_version }}@bwv.
command: "rvm use ruby-{{ ruby_version }}@bwv --create"
environment:
PATH: "{{ rvm_path }}:{{ ansible_env.PATH }}"
GEM_HOME: "/usr/local/rvm/gems/ruby-{{ ruby_version }}@bwv"
GEM_PATH: "/usr/local/rvm/gems/ruby-{{ ruby_version }}@bwv:/usr/local/rvm/gems/ruby-{{ ruby_version }}@global"
when: gemset_needs_an_update.stdout.find('=> ruby-{{ ruby_version }}@bwv') == -1
- name: RVM | Use ruby-{{ ruby_version }}@bwv gemset as default.
command: "rvm use ruby-{{ ruby_version }}@bwv --default"
environment:
PATH: "{{ rvm_path }}:{{ ansible_env.PATH }}"
GEM_HOME: "/usr/local/rvm/gems/ruby-{{ ruby_version }}@bwv"
GEM_PATH: "/usr/local/rvm/gems/ruby-{{ ruby_version }}@bwv:/usr/local/rvm/gems/ruby-{{ ruby_version }}@global"
when: gemset_needs_an_update.stdout.find('=> ruby-{{ ruby_version }}@bwv') == -1
这个想法是编写一个 Ansible 剧本,将可用的 ruby gemset 安装到远程 Ubuntu 服务器。但由于某种原因,默认值根本没有改变。相反,这种情况一遍又一遍地发生:
TASK [ruby-gemset : RVM | check if the bwv gemset needs to be set default.] ****
changed: [xenial64]
TASK [ruby-gemset : RVM | Create and use ruby-2.3.1@bwv.] **********************
changed: [xenial64]
TASK [ruby-gemset : RVM | Use ruby-2.3.1@bwv gemset as default.] ***************
changed: [xenial64]
可以以某种方式使用 Ansible 到远程服务器来完成吗?我意识到那些环境行只帮助命令通过而不会失败,但现在几乎什么都不做。