質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

3回答

8452閲覧

Ansibleでどうしても"skipping"じゃなくて"ok"を出したい(MacにRubyインストール時)

ikuwow

総合スコア462

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

2クリップ

投稿2015/05/07 15:40

Macの環境設定をAnsibleで行っているのですが、どうしても"skipping"を"ok"にしたい部分があります。(単に個人的なこだわりで、これを解決したからといってあまり価値は生まれないのですが・・・(^^;;))

playbook(一部)は以下のようにしています。現在インストールされているRubyのバージョンを確認して、目的のバージョンをrbenv installするという流れです。

--- - hosts: localhost # hostname sudo: no gather_facts: no vars: ruby_version: "2.1.5" tasks: - name: Install Rubys homebrew: name={{item}} with_items: - ruby-build - rbenv # Install Ruby - name: Check installed Ruby version shell: "rbenv versions | grep {{ruby_version}} > /dev/null ; echo $?" ignore_errors: true register: ruby_is_installed changed_when: ruby_is_installed.stdout != '0' - name: Install Ruby shell: "rbenv install {{ruby_version}}" when: ruby_is_installed.stdout != '0' # Switch Ruby version - name: Check Ruby version shell: "ruby -v | grep {{ruby_version}} > /dev/null ; echo $?" register: is_correct_version changed_when: is_correct_version.stdout != '0' - name: Switch Ruby version shell: "rbenv global {{ruby_version}} && rbenv rehash" when: is_correct_version.stdout != '0'

これを実行すると以下のようになります。(出力の一部)

$ ansible-playbook base.yml PLAY [localhost] ************************************************************** ASK: [Install Rubys] ********************************************************* ok: [localhost] => (item=ruby-build) ok: [localhost] => (item=rbenv) TASK: [Check installed Ruby version] ****************************************** ok: [localhost] TASK: [Install Ruby] ********************************************************** skipping: [localhost] TASK: [Check Ruby version] **************************************************** ok: [localhost] TASK: [Switch Ruby version] *************************************************** skipping: [localhost]

この、"Install Ruby"と"Switch Ruby version"の部分をOKにしたいなと考えています。現状が望む状態だったというのはよいことなのに、"ok"と表示されずに"skipping"とただ特に理由も示されずに飛ばされてしまうのがやや気持ち悪いのです。あと青が交じるよりオールグリーンのほうが気持ちいいかなと。ほんとつまらないこだわり以上の何者でもありませんw

"ok"を実現できる何か違う書き方があるんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

when ではなく creates を使うように書き換えられれば簡単でしょうが・・・

# Install Ruby - name: Install Ruby shell: "rbenv install {{ruby_version}}" args: creates: ~/.rbenv/versions/{{ruby_version}}/bin/ruby

Switch Ruby version の方のケースなんかはこの方法ではフォローできないと思います。

次のように when を使わずに無理やりスキップするようにすれば ok と表示させることもできなくはないと思います(トリッキーな感じがするのでオススメできませんが)。

# Install Ruby - name: Check installed Ruby version shell: "rbenv versions | grep {{ruby_version}} > /dev/null ; echo $?" ignore_errors: true register: ruby_is_installed changed_when: ruby_is_installed.stdout != '0' - name: Install Ruby shell: > {% if ruby_is_installed.stdout != '0' %} rbenv install {{ruby_version}} {% else %} : {% endif %} changed_when: ruby_is_installed.stdout != '0'

投稿2015/05/07 17:24

編集2015/05/08 10:41
ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2015/05/10 08:52

恥ずかしながらcreatesというオプションを知りませんでした。Install Rubyの方は一旦createsを使うことでokを出すことが出来ました。ありがとうございました!
guest

0

Check Ruby version と Switch Ruby version を一緒にやってしまえばいいのでは?

- name: Check and switch Ruby version shell: >- is_correct_version=$(ruby -v | grep {{ruby_version}} > /dev/null ; echo $?) if [ $is_correct_version != 0 ]; then rbenv global {{ruby_version}} && rbenv rehash fi

シェルスクリプトは動作未確認。

投稿2015/05/08 01:43

kodai

総合スコア759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2015/05/10 08:54

なるほど、シェルスクリプトを練って動作が保証できればうまくいきそうですね。ありがとうございます!
guest

0

git clone https://github.com/ansible/ansible.git -b stable-1.9 --depth 1 から

ソースコード検索ツールptでskipping を検索してみました

該当したファイル(とその行)を書き換えれば、希望の動作になるかもしれませんね

bin/ansible-galaxy: 860: print '- dependency %s is already installed, skipping.' % dep["name"] 884: print '- %s is not installed, skipping.' % role lib/ansible/callbacks.py: 556: msg = "skipping: [%s] => (item=%s)" % (host, item) 558: msg = "skipping: [%s]" % host 606: display("skipping: no hosts matched", color='cyan') plugins/inventory/collins.py: 317: self.log.warning("No IP addresses found for asset '%s', skipping", 322: "No IP address found at index %s for asset '%s', skipping", v2/ansible/executor/task_executor.py: 184: debug("when evaulation failed, skipping this task") lib/ansible/runner/lookup_plugins/first_found.py: 76:# example skipping if no matched files v2/ansible/plugins/callback/default.py: 72: msg = "skipping: [%s]" % result._host.get_name() 103: self._display.display("skipping: no hosts matched", color='cyan') v2/ansible/plugins/lookup/first_found.py: 75:# example skipping if no matched files test/integration/roles/test_conditionals/tasks/main.yml: 283:- name: test a with_items loop skipping a single item

Links

投稿2015/05/07 16:59

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2015/05/10 08:37

なるほど、結構強引な方法ですね。ただソースを見るという発想はありませんでした。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問