2016-04-13 6 views
0

は、私は現在、Ansibleを学んでいます、と私はいくつかの古いバッシュは、Webサーバを構築するためのスクリプトをインストール変換しています、勉強しています何を適用します。私の使用事例の1つは、Webサイトをインストールまたはアップグレードすることです。このプロセスは、一般的に次のとおりです。vhostの変更がない場合、Apacheが再起動されないようにWebサイトの配置をどのようにアレンジできるか?

  • コピーApacheのバーチャルホストの定義/etc/apache2/available-sites
  • /var/www/sitename/etc/apache2/enabled-sites
  • チェックアウトブランチの
  • シンボリックリンクバーチャルホストの定義やソースフォルダからコピーその内部
  • 実行カスタムセットアップまたは移行スクリプトプロジェクトPhingの
  • のApacheの
  • グレースフルリスタートと

私はバーチャルホストが必要な場合にのみ、私は私のSSL証明書のパスフレーズを持っている主な理由は、Webサーバの再起動を行うことに興味がある、これはする必要があります。それが起こったら再入力します。このプレイブックのほとんどの実行はアップグレードであり、インストールではないので、必要でない再起動を抑制することが理にかなっています。

私は、このユースケースの周りにいくつかの検索を行ってきたが、私は、オンラインで多くの関連資料を見つけることができないようです。したがって、私は変更を検出するためにファイルハッシュを使用して、次のように作成して、それを行うより良い方法があるかどうか疑問に思っています。ここでは、次のとおりです。

--- 

# Copy site contents unconditionally 
- file: path=/var/www/html state=directory 
- copy: src=../../build-files/default/index.html dest=/var/www/html/index.html 

# Copy vhost to a temporary file so we can checksum it remotely 
- copy: src=../../build-files/apache/000-default.conf dest=/tmp/000-default.conf 

# Get the checksum of the existing vhost 
- shell: md5sum /etc/apache2/sites-available/000-default.conf | cut -f 1 -d ' ' 
    register: old_checksum_default_site 

# Get the checksum of the new vhost 
- shell: md5sum /tmp/000-default.conf | cut -f 1 -d ' ' 
    register: new_checksum_default_site 

- debug: msg="Old checksum is {{ old_checksum_default_site.stdout }}, new checksum is {{ new_checksum_default_site.stdout }}" 

# Copy our default vhost into place if necessary 
- copy: src=../../build-files/apache/000-default.conf dest=/etc/apache2/sites-available/000-default.conf 
    notify: restart apache 
    when: old_checksum_default_site.stdout != new_checksum_default_site.stdout 

定型のかなりのビットは、すべてのサイトのために行うためのだし、それはまださえシンボリックリンクしない - 短い方法はありますか?私はPythonプログラマーではありませんが、カスタムモジュールを書くことが最良の解決策であるかどうかを教えてください。

答えて

2

のapache /バーチャルホストのものの内部を知らなくても、これは

# Copy site contents unconditionally 
- file: path=/var/www/html state=directory 
- copy: src=../../build-files/default/index.html dest=/var/www/html/index.html 

# Copy vhost to a temporary file so we can checksum it remotely 
- copy: src=../../build-files/apache/000-default.conf dest=/etc/apache2/sites-available/000-default.conf 
    notify: 
    - restart apache 

000-default.confのローカルコピーに変更がない場合は、あなたがそれを実行すると、その後ansibleステップが緑として報告されます十分なはずです。何かが変更されている場合は

、その後、色が黄色になり、あなたが最後に実行ハンドラが表示されます。

+0

それは変化をもたらすならば、右ああ、Ansibleコピーはのみ動作しますか? – halfer

+0

が正しいです。それは内部的にすべてのmd5sumのことを行います(または、別の方法を使用します - これがどのように行われているかわかりません)。編集:あなたはあなたのサーバーを希望の状態にする何かのものと考えることができます。状態の変更を指定しないと(あなたの設定を更新することによって)、無能な人は何もしません – user2599522

+0

すごくいいですよ、それは簡単です - ありがとう! – halfer

関連する問題