タグ付けされた質問 「ansible」

Ansibleは、コンピューターを構成および管理するためのオープンソースソフトウェアプラットフォームです。マルチノードソフトウェアの展開、アドホックタスクの実行、および構成管理を組み合わせています。

3
ansibleと変数のリストを含むシンボリックリンクの作成
ansibleの新機能-srcディレクトリ内の多数のファイルを宛先にシンボリックリンクしようとしています。現在: file: src: /drupal/drush/{{ item.path }}.aliases.drushrc.php dest: /home/vagrant/.drush/{{ item.dest }}.aliases.drushrc.php with_items: - { path: 'new', dest: 'new' } - { path: 'vmdev', dest: 'vmdev' } state: link エラーが発生しています: fatal: [vmdev] => One or more undefined variables: 'item' is undefined 誰かが私を正しい方向に向けることができますか?乾杯
17 ansible 

2
辞書キーがansibleタスクで定義されていないことを確認する方法はありますか?
私のコードにはタスクがあります - name: cool task shell: 'touch iamnotcool.txt' when: me.cool is not defined 私の変数は次のようになります --- me: stumped: yes そのため、タスクを実行すると、次のエラーが返されます {"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.

5
構成マネージャー(Puppet / Chef / Ansibleなど)を使用するのが適切な場合
現在の職場では、2台のVMwareホストマシン、1台のOpenBSD物理マシン、3台のDebian VM、および6台のWindows Server VMを管理しています(2008/2012)。 PuppetやChefなどの構成管理ツールの実装を検討しています。これは合理的ですか、またはツールを学習するオーバーヘッドが利点を上回っていますか?管理性と実装コストの転換点はどこですか?

1
Ansibleのpipモジュールを実行中にPATHに追加するにはどうすればよいですか?
Ansibleのpipモジュールを使用してpsycopg2をPython virtualenvにインストールしようとしていますが、正しくビルドするためにPATHにエントリを追加する必要があります(を含むディレクトリへのパスを知る必要がありますpg_config)。私environmentはpipモジュールに渡すことができることがわかりますが、上書きするのではなく前に追加する方法がわかりませんPATH。 ここでは、必要なディレクトリをパスの先頭に追加しようとしていますが、virtualenv PATHを上書きして失敗します: - pip: name: psycopg2 virtualenv: /path/to/my/venv environment: PATH: /usr/pgsql-9.3/bin:$PATH


5
ansible print debug msg変数
次のようなmosh_versionansible debug msgコマンドを使用して、以前に登録した変数を印刷しようとしました。 - name: Print mosh version debug: msg="Mosh Version: {{ mosh_version.stdout }}" 動作せず、次のエラーを出力します。 Note: The error may actually appear before this position: line 55, column 27 - name: Print mosh version debug: msg="Mosh Version: {{ mosh_version.stdout }}" ^ We could be wrong, but this one looks like it …

7
Ansibleで複数のファイルをリモートマシンからローカルに取得する方法
Ansibleを使用してリモートディレクトリからローカルディレクトリにファイルをコピーしたいのですが、フェッチモジュールでは1つのファイルしかコピーできません。ファイルが必要なサーバーが多数あり(各サーバーで同じディレクトリ)、Ansibleでこれを行う方法は今はありません。 何か案は?
17 linux  copy  ansible 

1
AnsibleでGlusterFSボリュームを作成してマウントする
GlusterFSを使用して、4台のマシンでボリュームを作成およびマウントしています。例えば言って、マシンが呼び出されmachine1、machine2、machine3とmachine4。 私の仲間はすでに首尾よく調査されています。 次のコマンドを使用してボリュームを作成しました。 sudo gluster volume create ssl replica 2 transport tcp machine1:/srv/gluster/ssl machine2:/srv/gluster/ssl machine3:/srv/gluster/ssl machine4:/srv/gluster/ssl force 次に、ボリュームを開始します。 sudo gluster volume start ssl /myproject/ssl次のコマンドを使用してディレクトリをマウントしました。 sudo mount -t glusterfs machine1:/ssl /myproject/ssl 各マシンにマウントすると、すべてが期待どおりに機能し、/myproject/sslディレクトリにはすべてのマシンで共有されるデータが含まれます。 問題は、一体どうやってこれをAnsibleの方法でやるのかということです。 これら2つのコマンドをAnsibleの方法で実行しようとする私の試みを次に示します。 - name: Configure Gluster volume. gluster_volume: state: present name: "{{ gluster.brick_name }}" brick: "{{ gluster.brick_dir }}" replicas: …

2
Ansibleで複数のプレイブックを順番に実行する方法は?
私は、新しいサーバーインスタンスを起動するために、いくつかのAnsibleプレイブックに取り組んでいます。サーバーを正常に起動するには、特定の順序で実行する必要がある約15の異なるプレイブックがあります。 私の最初の考えは、実行するansible-playbook playbook_name.yml必要がある各プレイブックに対して1つのエントリを実行して複製するシェルスクリプトを記述することでした。 マスタープレイブックを使用してこれを行うより賢明な/より良い方法があり、もしそうならどのようになりますか(例を高く評価します)。 すべてを実行する1つのモノリシックプレイブックを作成することもできますが、最初にルートとして実行され、後でsudoユーザーとして実行される一部のプレイがあります。

3
条件に応じてデフォルト値を変更可能
ある条件(つまり、別の変数の値)に従ってロール変数のデフォルト値を変更することは可能ですか? 詳細 コマンドに関連する2つの変数がenvありcomposer_optsます。 両方がデフォルト(env = "prod"およびcomposer_opts = "--no-dev")のままになっている場合は、すべて問題ありません。 に変更envするdevと、もう一方のデフォルトがコマンドを中断するため、常に両方を設定する必要があります。カスタムスクリプト/ ifで条件付きデフォルト値を設定することでこれを回避することは可能でしょうか? 重要:値に従って常にcomposer_opts値を設定する必要はありませんenv。まだ設定されていない場合にのみ設定します(動的なデフォルト値)。 擬似コード 私はこのようなことをしたいと思います(次のコードは無効です、私のニーズを表現するための単なる擬似コード) --- # defaults/main.yml env: prod composer_opts: when: "{{env}}" = 'prod' '--no-dev --optimize-autoloader --no-interaction' when: "{{env}}" = 'dev' ''
16 ansible 

3
Ansible with_itemsはアイテム全体を印刷しませんか?
私はこのようなSSLキーを自動的に保護しています: - name: Find ssl keys find: paths="/etc/ssl/" patterns="*.key" recurse=yes register: secure_ssl_keys_result - name: Secure ssl keys file: path={{ item.path }} user=root group=root mode=600 with_items: secure_ssl_keys_result.files 現在、すべてのアイテムについて、アイテムのコンテンツ全体を含む巨大なログメッセージがあります。 ok:[127.0.0.1] =>(item = {u'uid ':0、u'woth':False、u'mtime ':1454939377.264、u'inode':400377、u'isgid ':False、u' size ':3243、u'roth':False、u'isuid ':False、u'isreg':True、u'gid ':0、u'ischr':False、u'wusr ':True、u'xoth ':False、u'rusr':True、u'nlink ':1、u'issock':False、u'rgrp ':False、u'path':u '/ etc / ssl / foo.key'、u 'xusr':False、u'atime ':1454939377.264、u'isdir':False、u'ctime …
16 ansible 

2
サーバーで使用されなくなった役割からのものをクリーンアップする方法は?
とりわけ、関連するAnsibleロールがインストールされnginx、いくつかの重要な構成を実行/etc/nginxし、ファイアウォールでポート80および443を開くWebサーバーであるホストがあるとします。 ある時点で、その特定のホストがWebサーバーにならないようにします。何らかの理由でそのサービスを他の場所に移動したからです。[webservers]インベントリからサーバーを削除するだけで、サーバーにゴミが残ります。理想的には、アンインストールnginxして、/etc/nginxディレクトリ(およびその他のディレクトリ)を削除し、ファイアウォールのポート80と443を閉じます。 Puppetではこれを行うことができます。Webサーバーであるホストの構成には、次のようなものがあります。 class { 'nginx': ensure => present, } そして、私がしなければならないことは、「現在」を「不在」に置き換えることです。nginxクラスが適切に記述されている場合、変更は元に戻されます。(通常、管理者は「現在」を「不在」に置き換えます。その後、影響を受けるすべてのホストが構成を元に戻したことを確認したら、マニフェストからアイテムを削除します。) さらに、Puppetファイアウォールモジュールは、マニフェストに見つからないファイアウォールルールを自動的に削除すると思います。ファイアウォールの場合、上記の「不在の」ことをする必要さえないと思います。とにかくファイアウォールは自動的に閉じます。 Ansibleでこれらのことを達成するにはどうすればよいですか?
15 ansible 

4
Ansibleはリストを使用して辞書を反復処理します
私は次の変数をロードしましたinclude_vars: access: username-foo: - path: / permissions: rwX recursive: true username-bar: - path: / permissions: rX - path: /css permissions: rwX recursive: true - path: /data permissions: rX - path: /data/reviews.yml permissions: rw - path: /js permissions: rX - path: /js/*.js permissions: rw shell適切な許可を設定するために、この情報をコマンドにフィードします。 私はここからいくつかのテクニックを試しました:http : //docs.ansible.com/playbooks_loops.html しかし、実用的なソリューションを思い付くことができませんでした。 この構造を反復することは可能ですか?そうでない場合、機能させるためにどのように再構築するのですか?DRYルールに違反せずにこれを行うことは可能ですか(たとえば、すべてのレコードにユーザー名を含める)。
15 ansible 

2
AnsibleでURIリクエストからのJSONレスポンスを確認する方法は?
JSONレスポンスを取得するためにWebサイトにURIリクエストを行うAnsibleタスクがあります。ネストされたJSON変数が定義されている場合はAnsibleに何かを行い、定義されていない場合は別のことを行います。 - name: Get JSON from the Interwebs uri: url="http://whatever.com/jsonresponse" return_content=yes register: json_response - name: Write nested JSON variable to disk copy: content={{json_response.json.nested1.nested2}} dest="/tmp/foo.txt" ignore_errorsは、Jinjaテンプレート内のネストされたデータ構造の未定義値をチェックするためではなく、タスクのコマンドが失敗した場合にのみ機能することに注意してください。したがって、json_response.json.nested1.nested2定義されていない場合、このタスクはignore_errors=yes設定されていても失敗します。 /tmp/foo.txtリクエストが失敗した場合、またはリクエストに適切なネストされた値が定義されていない場合に、このプレイブックを取得してデフォルト値を保存するにはどうすればよいですか?
15 ansible 

2
ansibleにアーカイブモジュールがないのはなぜですか?
以下のためにグーグルでAnsibleは、tarを作成するか良い結果が得られないとありながらアーカイブしないモジュールは、何もありませんアーカイブモジュール。 おそらくコマンドモジュールで解決しますが、Ansibleが初めてなので、間違っているのではないかと思います。私は、実稼働サーバーにアップロードするソースコードの風袋引きを必要とする最初の人ではないと確信しています。 では、なぜアーカイブモジュールがないのか、コミュニティはこのユースケースをどのように処理するのでしょうか?
15 ansible 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.