2016-02-13 2 views
0

Я пытаюсь использовать Ansible для установки компаса, который необходим для одной из наших служб, на сервере EC2. Обычно мы устанавливаем его вручную, используя следующие команды -install compass with ansible

curl -L https://get.rvm.io | bash -s stable 
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 
source ~/.rvm/scripts/rvm 
echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc 
rvm install 2.1.2 
rvm use 2.1.2 --default 
gem install compass 

А затем запустить компас компилировать успешно. Теперь, когда я пытаюсь запустить эти команды с помощью загружаемой книги Ansible (используя оболочный модуль), команда компаса не найдена системой.

Я пробовал использовать RVM official Ansible role (https://github.com/rvm/rvm1-ansible), и все, что у меня есть, больше ошибок.

Я попытался установить rubydev и rubygems-integration с помощью apt, а затем установить драгоценный камень, используя модуль gem. Это распознает команду компаса, но когда я пытаюсь скомпилировать или даже показать версию компаса, она возвращает ошибки. Здесь ошибка для запуска компаса -v, например:

Errno::ENOENT on line ["25"] of /usr/lib/ruby/vendor_ruby/compass/version.rb: No such file or directory - /usr/lib/ruby/vendor_ruby/compass/../../VERSION.yml 
Run with --trace to see the full backtrace 

Это сборник пьес, которые удалось установить компас, но оставил меня с ошибками, которые я упомянул:

--- 
- hosts: "{{ host_name }}" 
    become: yes 
    become_method : sudo 
    tasks: 
    - name: install ruby-dev 
     apt: 
     name: ruby-dev 
    - name: install rubygems 
     apt: 
     name: rubygems-integration 
    - name: install ruby compass 
     apt: 
     name: ruby-compass 
    ... 

любят ли некоторая помощь.

+0

Можете ли вы разместить свой плей-лист? – ydaetskcoR

+0

Какая задача это не удается? – ydaetskcoR

+0

Как я уже писал выше - текущая игра работает успешно, но когда я пытаюсь запустить компас компиляции или даже компас -v, он терпит неудачу (при установке вручную он отлично работает) –

ответ

0

Это сборник пьес, которые в конечном счете работал для меня для установки компаса -

--- 
- hosts: "{{ host_name }}" 
    become: yes 
    become_user : deploy3 
    tasks: 
    #- name: get gpg 
    # shell: "gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3" 
    - name: install rvm 
     shell: "curl -L https://get.rvm.io | bash -s stable" 
    - name: install rvm 2.1.2 
     shell: "/home/deploy2/.rvm/bin/rvm install 2.1.2" 
    - name: use rvm 2.1.2 by default and install compass 
     shell: "bash -lc \"/home/deploy2/.rvm/bin/rvm use 2.1.2 --default && /home/deploy3/.rvm/rubies/ruby-2.1.2/bin/gem install compass\"" 
... 
1

Вы также можете использовать модуль гем это лучше, чем сценарий оболочки, поскольку он не зависит от распределения Linux вы используете, пример:

Одним из примеров пьес

- name: Installing ruby 
    apt: 
    pkg: "{{ item }}" 
    state: present 
    with_items: 
    - ruby2.0 
    - ruby2.0-dev 

- name: Symlink exists for Ruby 2.0 
    file: src=/usr/bin/ruby2.0 dest=/usr/local/bin/ruby state=link 

- name: Symlink exists for Ruby Gems 2.0 
    file: src=/usr/bin/gem2.0 dest=/usr/local/bin/gem state=link 

- name: install compass 
    gem: 
    name: compass 
    state: latest 

Кстати, вы можете увидеть больше о модуле гем здесь в анзибль документации: http://docs.ansible.com/ansible/latest/gem_module.html