2016-04-01 10 views
0

私の遊び私はホストにsshを実行し、いくつかの役割を実行するが、私はインスタンスに次のインクルードに関係なく、実行するに失敗したときに/ここsshのエラーで終了

は一例であり、

はFYI - app_ec2は、AWS上でインスタンスを作成し、ホストを設定し、build.ymlその後、このインスタンスに設定を適用し、ユーザーを起動し、このインスタンスをAMIを作成し、その後、ASGroup

--- 
- hosts: localhost 
    connection: local 
    serial: 1 
    gather_facts: true 
    any_errors_fatal: true 
    max_fail_percentage: 0 
    vars_files: 
    - "vars/security.vars" 
    - "vars/{{ env }}/common.vars" 
    - "vars/server.vars" 
    roles: 
    - app_ec2 

- include: build.yml 
- include: launch-asg.yml 

build.yml:

- hosts: "{{ role }}"                                                
    serial: 1 
    gather_facts: true 
    sudo: yes 
    any_errors_fatal: true 
    max_fail_percentage: 0 
    vars_files: 
    - "vars/{{ env }}/common.vars" 
    - "vars/server.vars" 
    roles: 
    - default 
    - restart 
    - awscli 
    - cloudwatch-logs 
    - ntp 
    - java 
    - tomcat 
    - newrelic 
    - newrelic_apm 
    - "{{role}}" 
    - app_liquibase 
    - restart 
+0

サンプル出力とbuild.ymlの内容を入力できますか? – user2599522

+0

- ホスト: "{{ロール}}" シリアル :1 gather_facts:真 須藤:YES any_errors_fatal:真 max_fail_percentage:0 vars_files: - "VARS/{{ENV}}/common.vars" - "VARS/server.vars" 役割: - デフォルト - 再起動 - awscli - CloudWatchの-ログ - NTP - javaの - Tomcatの - newrelic - newrelic_apm - "{{}}役割" - app_liquibase - 再起動 – James

+0

投稿した内容に間違いはありません。私はそれを少し簡略化しました(ここでは)(https://gist.github.com/serialdoom/77e271410ea0ab2e2e3b242c5bc9e6fb)私はそれをテストすることができますし、私のために失敗します。サンプル出力を実行できますか? – user2599522

答えて

0

私はAnsible Blocksを使用することを示唆しています:

tasks: 
    - block: 
     - debug: msg='i execute normally' 
     - command: /bin/false 
     - debug: msg='i never execute, cause ERROR!' 
    rescue: 
     - debug: msg='I caught an error' 
     - command: /bin/false 
     - debug: msg='I also never execute :-(' 
    always: 
     - debug: msg="this always executes" 

をそして、あなたはこの回避策を使用することができます。現在のホスト上の

  • を実行し、いくつかの脚本(-cローカル==ローカル接続)
  • ブロック内の を呼び出すと、リモートホストに接続する可能性があり、 ブロックが失敗した場合は再試行します。

PS:

Ansibleプレイブックは冪等の概念を使用する必要があります。

それらが適用される を必要とするときのコマンドにのみ適用されるべきで変更し、それを記述するために優れていることをコンセプト希望状態の は、その状態に到達するプロセスよりもシステムです。同様に、 米国のノースカロライナ州からカリフォルニア州への道は と非常に遠い道のりを運転していますが、もし私がその代わりに アラスカ州アラスカ州西部を走っていれば、もはや正しい道ではなくなります カリフォルニア。あなたが「 カリフォルニアに入れて」と言ってそこに着く方法を決定するようなAnabilitiesのリソース。あなたがすでに カリフォルニアにいた場合、何も起こる必要はありません。それはあなたにそれを知らせるでしょう 何も変更する必要はありませんでした。

関連する問題