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

クラウドプロビジョニング、構成管理、アプリケーションのデプロイなどのトピックでのAnsibleの使用に関連する、オープンソースの自動化エンジンであるAnsibleに関する質問には、このタグを使用してください。

3
変数への相対パスがないプレイブック
私はすでにたくさんのプレイブックを持っていたので、それらをプレイブックディレクトリに整理し始めました。これにより、varsファイルへの相対パスが必要になります。 実際の脚本: --- - hosts: aws_instance.jenkins-agents user: ec2-user vars_files: - ../../../vars/main.yaml - ../../../vars/vault.yaml ... dir構造を維持する方法はありますが、lochnessファミリー(../../../)は避けますか? 私は役割について知っています。それらへのパスを指定できますが、vars_filesに類似するものは見つかりません プロジェクト条件: プロジェクトのルートからプレイブックを実行する必要があります varsとplaybooks dirの両方がプロジェクトのルートにあります このプロジェクトには静的なインベントリ/ホストはありませんが、プレイブックを実行するとオンザフライで生成されます
8 ansible 

3
ポートがLISTEN状態でないかどうかをチェックするansibleモジュールはありますか?
Ansibleモジュールインデックスを調べましたが、ポートが利用可能かどうかをチェックするモジュールが見つかりませんでしたか?これをサポートするモジュールはありますか? どういうavailable意味ですか? 利用可能とは、ポートが、たとえば80LISTEN状態でないことを意味します。以下は、ポート111が使用できないことを示しています。 user@localhost ~ $ ss -nat State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* この質問の目的は何ですか? この質問の目的は、ポート80がcertbot以外の別のプロセスによってすでに割り当てられている場合に、Ansibleの実行を停止する方法を見つけることです。Certbotはポート80が使用可能であることを必要とします。そうでない場合、証明書は更新できません。問題はここにあります。

1
トレリスのVagrant同期フォルダーのファイル権限を制御するためのAnsibleプレイブックでのVagrantfileの変更
私はWordPress開発にTrellisを使用しています。同期したフォルダー内のファイル(またはディレクトリ)のアクセス許可を変更するのが難しいのを除いて、それはうまく機能します。 通常、デフォルトの権限設定で問題ありません。ただし、メイン(NFS)同期ディレクトリのサブディレクトリの一部に書き込み権限を与える必要がある場合があります。 これはVMのメイン構成にAnsibleプレイブックを使用するVagrantfileです(私はVirtualBoxを使用しています)。私はRubyプログラマではありませんし、Ansibleを使用したこともありませんが、その外観からすると、Vagrantfileファイルのアクセス権が設定されている部分は次のようになります。 if Vagrant::Util::Platform.windows? and !Vagrant.has_plugin? 'vagrant-winnfsd' wordpress_sites.each_pair do |name, site| config.vm.synced_folder local_site_path(site), remote_site_path(name, site), owner: 'vagrant', group: 'www-data', mount_options: ['dmode=776', 'fmode=775'] end config.vm.synced_folder ANSIBLE_PATH, ANSIBLE_PATH_ON_VM, mount_options: ['dmode=755', 'fmode=644'] config.vm.synced_folder File.join(ANSIBLE_PATH, 'bin'), bin_path, mount_options: ['dmode=755', 'fmode=755'] else if !Vagrant.has_plugin? 'vagrant-bindfs' fail_with_message "vagrant-bindfs missing, please install the plugin with this …

2
Ansibleで「E405:リモートパッケージタスクには再試行が必要」を解決する方法
E405 v4.0.0リモートパッケージタスクには再試行が必要ですパッケージ操作はネットワーク通信とリモートサーバーの可用性を必要とするため、信頼できません。潜在的な問題を軽減するために、再試行はregister:my_resultおよびuntil:my_result |を介して使用する必要があります。成功 これは、実行時にansible-lint次のエラーとして表示されます。 [405] Remote package tasks should have a retry plays/sample.yml:31 Task/Handler: Install list of packages サンプルコードを考えると: - name: Install list of packages apt: name: [jq, vim, curl, unzip, dnsutils] state: present これを解決するには?
7 ansible 

3
マスター/エージェント構成管理を実行する明確な利点は何ですか?
Ansibleは、エージェントがなく、ある程度のオーバーヘッドを節約できるため、シェフや人形のような競争よりも明らかに有利なようです。 さまざまな構成ツールの比較をいくつか読んだところ、各ツールにはそれぞれ長所と短所がありますが、その多くは個人の好みによるものであることがわかりました。 エージェントレスであることの利点は非常に簡単ですが、構成管理ツールに関してマスター/エージェントアーキテクチャの利点はありますか?

1
インベントリファイルでIPv6アドレスを表記する方法は?
私はipv6経由でのみアクセス可能なマシンを持っています。rsaキーでsshをセットアップします。今、私はそれをansibleで管理したいと思います。残念ながら、これはインベントリのドキュメントではカバーされていません。 だから私は次の順列を試しました: docker_test ansible_host=fe80::88ea:e002:b409:4be0 docker_test ansible_host=[fe80::88ea:e002:b409:4be0] docker_test ansible_host=\[fe80::88ea:e002:b409:4be0\] これはどれもうまくいきませんでした。 比較のために、.ssh/configエントリを追加します。 Host docker_host AddressFamily inet6 HostName fe80::88ea:e002:b409:4be0 BindAddress fe80::3e6b:335a:d2f7:3a75%enp3s0 :私はこの問題は、部分的に解決し、少なくともあることを示している問題追跡システムに2つの閉じたバグを発見した3879、3888 このトピックに関するアドバイスは高く評価されます。

1
AnsibleにはPuppetDBに似たコンポーネントがありますか?
私は(限られた)経験からPuppetを知っており、構成管理ではAnsibleへの強い傾向があることに気づきました。 一方では、Ansibleはエージェントを必要としないことを理解していますssh。これは、Ansibleがをインテリジェントに使用するためです。 一方、これらはPuppetについて気に入った機能です。 REST APIを介したシステム全体の構成状態と履歴(PuppetDB)へのアクセス 上書きされたファイルのバックアップを保持する機能(filebuckets) Hiera構成の一部を暗号化する機能(.eyaml) これらの中で、PuppetDBは私にとって最も重要で便利なようです(他のツールとの統合など)。したがって、私の質問は次のとおりです。Ansibleには、PuppetDBに似たものがありますか。たとえば、「ホストxにインストールされているパッケージは何か」と尋ねられるAPIを提供するコンポーネントですか。または「どのホストにパッケージyがインストールされていますか?」 (この質問はStackOverflowから移行されました)。 UPDATE Puppetの重大な欠点それまでの私の経験:エージェントを必要とするという事実はそれほどではありません(私が見たところ、AnsibleのPythonの使用は、Pythonインタープリターの形式で一種のエージェントを導入します;-)。そのエージェントがroot唯一かつ常に行動することを望んでいること。

2
Ansibleでデプロイメントを構築する3つのソリューション?
私は現在新製品を展開しており、プレイブックとロールを構成するためにいくつかの問題に遭遇しました。私は3つの異なる解決策を持っていますが、どのパスが最適であるかを入力してもらいたいと思っています。 製品は、Windowsサーバー上のWebアプリケーションです。展開するには、次の手順が必要です(高レベル)。 javajdkをインストールする Tomcatをインストールする win_serviceをインストールする Java regkesを構成する Tomcatを構成する webappをインストールする サービスを開始 私はprodとステージング、group_vars、ロール(ansible-galaxyで作成)に静的インベントリを使用しているため、何らかの構造があります。 解決策1 すべてを1つの巨大なハンドブックにまとめます。これはうまく聞こえませんが、以前のインストールからの変数を知っているという利点があります。たとえばtomcat、どこにあるかを知る必要がJAVA_HOMEあります...それは、javajdkインストールにあったのJAVA_HOMEです。 解決策2 すべてを小さな役割に分割します。良さそうですが、役割は互いに独立している必要があります。タスクを分離する方法は見つかりませんでした。それは感覚などのための単一の役割を持つことになるだろうinstall_tomcat、config_tomcatと順番に言及した役割を持って脚本を設定しますか? しかし、ある役割はどのようにして知るのでしょうか。たとえば、次の役割で必要とされるパス名などです。->インストールはパスを設定します、configは知る必要があります。私は役割を独立させることが本当にわかりません。 ソリューション3ソリューションの 種類2.役割のみを含み、できるだけ役割に分割したメインプレイブックを用意します。独立変数名を持っている./roles/vars/main.yml どういうわけか(?)は、必要varなすべての定義が適用される、プレイブックの変数の優先順位の高い場所を見つけます。内部的には、変数をロールにパスするか、単にロール変数を無効にします。 たとえば、製品にサービスがある場合、サービス名は通常、のパス名の一部ですtomcat。tomcat名前は、サービスに依存してはならないので、そこにあるべきtomcat_install_path役割でもservice_name製品と。したがって、製品のプレイブックがサービス名と呼ばれる場合、サービス名は名前の一部でtomcat_installある必要があります。これは、完全に異なる展開で呼び出され、サービス名をいじる必要はありません。 私はソリューション3を使用しますが、それを設定する方法をまだ見つけていません。専門家の意見は何ですか、ソリューション3は実行可能ですか、もう1つはより優れていますか、それとも4番目のソリューションがありますか?

4
Ansible-プライベートgitリポジトリ-SSHエージェントの転送とプライベートSSHキーのコピー
私は最近、Ansibleをいじり始めました。DevOpsに関する経験はあまりなく、複雑なシナリオを処理する必要はまったくありませんでした。現在の展開ツールであるDeployer PHPを置き換えるために、Ansibleプレイブックの作成を開始しました。残念ながら、gitリポジトリのクローン作成に行き詰まっています。今、私はgitリポジトリへのアクセスを有効にするために公開鍵を追加する必要があることを知っています。 SSHエージェント転送を使用する必要がありますか(この方法でローカルSSHキーを使用できます)、またはプライベートSSHキー(暗号化、ソース管理に追加)をansibleプロジェクト内に保存し、Ansibleを使用してターゲットノードにコピーする必要がありますか?質問が非常に広範囲にわたる可能性があることを知っているので、私にとって興味深いのは、両方のアプローチのセキュリティへの影響です。
7 ansible  git  security 

1
Ansibleを使用してdocker-composeをデプロイするベストプラクティスは何ですか?
Ansibleは、システムにdocker-composeをデプロイし、その後コンテナーを起動するために使用されます。 ansibleがローカルシステムから実行されると、Docker-composeファイルはAnsibleを使用してデプロイされます。 コードがbitbucketにプッシュされると、ファイルのコンテンツは次のようになります。 ../../../../docker-compose.yml CIはこれもシステムにデプロイします。 構造 project/ansible project/docker-compose.yml project/ansible/roles/role/files/docker-compose.yml 討論 docker-compose.ymlを2か所で変更する必要があることを防ぐために、シンボリックリンクが作成されていますが、このファイルにはコンテンツではなくリンクが存在するため、bitbucketでは無視されているようです。 このQ&Aは次のことを示しています。 シンボリックリンクによって参照されるデータはリポジトリに保存されません。 docker-compose.ymlでコードの重複を避けるためにシンボリックリンクを作成すると、問題が発生するようです。

1
Ansible条件ステートメントで現在の変数を参照していますか?
私は、ubuntuサーバーでユーザーを作成するために、ansible galaxyのwillshersystems.usersロールを使用しています。これで一貫して機能するようになったので、リストを指定してユーザーが特定のサーバーにアクセスできるかどうかに基づいて状態属性を設定しようとしています。 以下のようなことは可能ですか?私のグーグルフーは今のところ私を失敗させているようです、どんなアドバイスでも大歓迎です! vars: user_servers: user1: - testing1 users: - name: user1 groups: '{{ user_groups }}' state: "{{ ( inventory_hostname_short in user_servers[self.name] ) | ternary('present','absent') }}" roles: - role: willshersystems.users
7 ansible 

1
「nohup」モニタリングのベストプラクティスやツールはありますか?
nohupAWS Lambdaからboto3を介して生成されるマスター内でAnsibleプレイブックを開始するために使用します。 このプレイブックは複数のワーカーを作成し、いくつかのタスクを実行させて終了させます。 そこで、信頼性の高い監視システムを設計/構築したいと思います。とりあえず、マスター内nohupのtasks.logファイルにログを書き込み、Ansibleの再生が完了したら、それをストア(現時点ではS3)にプッシュしています。 しかし、私は同じことをするためのはるかにエレガントな(そして/または)より良い方法があるかどうか知りたいですか?また、その過程で私を助ける良いツールがあるかどうか?

1
Angular、PHP API、Ansibleプロジェクトに継続的デプロイメントを実装する方法は?
APIポイントとしてYii2(PHP / MySQL)を使用したAngular2プロジェクトに取り組んでいます。Angularアプリを顧客ごとに異なる言語でデプロイする必要があります(angular-cliからのAOTコンパイルを使用)。 これを達成するための最良の方法は何ですか?私はこの作業を行うためにDockerまたはAnsible(-container)を探しています。ただし、この例は主に1:1セットアップの場合です。しかし、次のような1:nが必要です。 deploy app-de new_costomer prod_server さらに、アプリの新しいバージョンが利用可能になったときに、ネットワーク全体を新しいアプリで更新したい(Arcでコンパイルされたsrc /フォルダーのアップロード、およびYii2側のdb移行スクリプトが必要)。 理想的には、次のようになります。 deploy update network-all prod_server 何か案は? 明確にするために:私には多数の顧客がいますが、各顧客は独自のコンテナ(Docker、Ansibleコンテナを介して)を取得する必要があります。AOTでコンパイルされたAngularのもの(JSのみ)とMySQLを備えたPHPバックエンドがあります。 各顧客はサーバーでこの設定を取得します(つまり、3人の顧客= Angular + PHP + MySQLを備えた3つのdockerコンテナー)。 AngularとPHPの両方に非常に頻繁に更新をプッシュします(つまり、DISTフォルダー全体をアップロードするか、少なくともdiff、PHP / MySQLバックエンドの移行スクリプトを実行する必要があるなど)。 そして、これは1つのコマンドからです(SSHで各コンテナに半手動で実行したくないためです)。 これまでこのような設定を行ったことがないので、Ansible(など)を使用してこれをどのように実現できるかについて考えたいと思います。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.