使用: Mac OS X 10.11.5,ansible 2.0.1.0,Python 2.7.11。Ubuntu Xenial LTS (带有VirtualBox版本5.0.16 r105871的Vagrant 1.8.1 )作为遥控器。
我正在尝试使用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剧本,在远程Ubuntu服务器上安装一个可用的ruby gemset。但由于某些原因,默认设置根本没有改变。相反,这种情况一次又一次地发生:
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以某种方式在远程服务器上完成吗?我意识到这些环境行只能帮助命令顺利通过,但现在几乎什么也做不了。
发布于 2016-05-25 04:45:33
至少这看起来是可行的:
---
# file: roles/ruby-gemset/tasks/main.yml
- name: RVM | check if the bwv gemset needs to be set default.
become_user: ubuntu
command: bash -lc "rvm list gemsets"
register: gemset_needs_an_update
changed_when: gemset_needs_an_update.stdout.find('=> ruby-{{ ruby_version }}@bwv') == -1
- name: RVM | Create and use ruby-{{ ruby_version }}@bwv.
become_user: ubuntu
command: bash -lc "rvm use ruby-{{ ruby_version }}@bwv --create"
when: gemset_needs_an_update.stdout.find('=> ruby-{{ ruby_version }}@bwv') == -1
- name: RVM | Use ruby-{{ ruby_version }}@bwv gemset as default.
become_user: ubuntu
command: bash -lc "rvm use ruby-{{ ruby_version }}@bwv --default"
when: gemset_needs_an_update.stdout.find('=> ruby-{{ ruby_version }}@bwv') == -1发布于 2016-08-04 03:20:26
我发现使用[rvm do set][1]命令来帮助绕过由Ansible产生的最小shell环境。
- name: Set Default Gem Set
shell: "/usr/local/rvm/bin/rvm {{ use_ruby_version}} do rvm use {{ rvm_default }} --default"
args:
chdir: "/home/{{ user_name }}"
become: yes
become_user: "{{ user_name }}"
tags:
- default_gemsetAnsible Vars:
use_ruby_version: ruby-2.2.5
current_gemset: foo
rvm_default: "{{ use_ruby_version }}@{{ current_gemset }}"运行Ansible 2.1 Centos 7/bash
https://stackoverflow.com/questions/37418951
复制相似问题