【问题标题】:Install Rbenv using Ansible使用 Ansible 安装 Rbenv
【发布时间】:2014-03-02 14:55:07
【问题描述】:

我正在尝试使用 Ansible 在我的服务器上安装 Rbenv,但出现此错误:

任务:[rbenv |创建临时目录] ************ ******** 致命:[localhost] => 条件表达式必须评估为 True 或 False:is_failed($rbuild_present)

致命:所有主机都已失败 -- 正在中止

我的剧本是:

---
- name: rbenv | update rbenv repo
  git: repo=git://github.com/sstephenson/rbenv.git
       dest=$rbenv_root
       version=v0.4.0

- name: rbenv | add rbenv to path
  file: path=/usr/local/bin/rbenv
        src=${rbenv_root}/bin/rbenv
        state=link

- name: rbenv | add rbenv initialization to profile
  template: src=templates/rbenv.sh.j2
            dest=/etc/profile.d/rbenv.sh
            owner=root
            group=root
            mode=0755

- name: rbenv | check ruby-build installed
  command: test -x /usr/local/bin/ruby-build
  register: rbuild_present
  ignore_errors: yes

- name: rbenv | create temporary directory
  shell: mktemp -d
  register: tempdir
  when_failed: $rbuild_present

- name: rbenv | clone ruby-build repo
  git: repo=git://github.com/sstephenson/ruby-build.git
       dest=${tempdir.stdout}/ruby-build
  when_failed: $rbuild_present

- name: rbenv | install ruby-build
  command: ./install.sh
           chdir=${tempdir.stdout}/ruby-build
  when_failed: $rbuild_present

- name: rbenv | remove temporary directory
  file: path=${tempdir.stdout} state=absent
  when_failed: $rbuild_present

- name: rbenv | check ruby $ruby_version installed
  shell: RBENV_ROOT=${rbenv_root} rbenv versions | grep $ruby_version
  register: ruby_installed
  ignore_errors: yes

- name: rbenv | install ruby $ruby_version
  shell: RBENV_ROOT=${rbenv_root} rbenv install $ruby_version
  when_failed: $ruby_installed

- name: rbenv | set global ruby $ruby_version
  shell: RBENV_ROOT=${rbenv_root} rbenv global $ruby_version
  when_failed: $ruby_installed

- name: rbenv | rehash
  shell: RBENV_ROOT=${rbenv_root} rbenv rehash
  when_failed: $ruby_installed

- name: rbenv | set gemrc
  copy: src=files/gemrc
        dest=/root/.gemrc
        owner=root
        group=root
        mode=0644

有什么想法吗?

【问题讨论】:

  • 使用state=directory 而不是command:file: 模块如何创建您的临时目录?
  • 刚刚尝试过,但无济于事。我在我的 OP 中更新的代码。还有其他想法吗?
  • 您是否拥有创建该目录的用户权限?
  • 我猜是这样,但我该如何检查?
  • ssh 作为该用户到该服务器并尝试手动执行该操作。

标签: rbenv ansible ansible-playbook


【解决方案1】:

我怀疑您使用的是最新的 Ansible 或 > 1.3.x 。 when_ 语法已被弃用,当你运行你的剧本时,它应该会给你一个警告。而是使用类似的东西:

when: ruby_installed|failed

或类似的东西:

when: 'not ($ruby_installed)'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2016-03-21
    相关资源
    最近更新 更多