Debian 7.1にAnsible AWXをインストールします

私たちは、FreeBSD上でサーバーの小さなグループの管理を何らかの形で単純化することにしました。 これらのサーバーはそれほど多くないようですが、それでも多くの場合、一連の同じタスクを一度に実行する必要があります。

彼らは長い間考え、選択し、比較しましたが、それでもAnsibleシステムをインストールするオプションを見つけました。 また、わかりやすくするために、AWXという名前のWeb銃口を固定します。

しかし、これは不運です。FreeBSDにサーバーがあり、Debianが「動作する」Linuxとして選択されています。 Ansible AWXは、公式のRHEL / FedoraおよびUbuntuとしてサポートしています。

誰もが覚えているように、UbuntuはDebianを去りました。つまり、先祖を覚えなければなりません。 DebianにAWXをインストールする方法を見つけます。

初期データ:含まれる構成オプション「SSHサーバー」および「システムユーティリティ」を含む、新しくインストールされたDebian 7.1 Wheezy。



AWXインストーラーはshスクリプト(これについてはもう少し詳しく説明します)ですが、このスクリプトが行うことは、ansibleのプレイブックを起動することだけです。これは、このスクリプトを実行する前にansibleをインストールする必要があることを意味します。

root@awx:~# apt-get install ansible   …        …  E:     ansible
      
      







しかし、ここではwheezyには予期しないことがありますので、テストリポジトリを接続する必要があります。 私はYandexミラーを使用しているため、/ etc / apt / sources.listファイルに次の行を追加しました。

 deb http://mirror.yandex.ru/debian/ testing main contrib non-free
      
      







次に、パッケージリストを更新します。

 root@awx:~# apt-get update
      
      







そして、必要な依存関係を持つansibleを配置します。

 root@awx:~# apt-get install ansible
      
      







課金されるすべてのものに同意し、インストールが完了するのを待っています。 その後、awxをダウンロードしますが、残念ながらパッケージには含まれていません。

 wget http://ansibleworks.com/releases/awx/setup/awx-setup-latest.tar.gz
      
      







開梱

 root@awx:~# tar xzvf awx-setup-latest.tar.gz
      
      







対処する必要があるものを検討します。

 root@awx:~/awx-setup-1.3.1# ls group_vars myhosts README.md roles setup.sh site.yml
      
      







README.mdファイルを読んだ後、group_vars / allファイル内のPostgreSQLの認証データを変更する必要があることがわかりました。また、pg_hba.confおよびSupervisord.confが上書きされるという警告が表示されます。 したがって、クリーンなシステムを使用しない場合は、適切なバックアップを作成する必要があります。



すべてが明確になっていますが、ここで既に上記で説明したインストーラーの構成を検討してください。

 root@awx:~/awx-setup-1.3.1# cat setup.sh #!/bin/bash getopts "e:" EXTRA_ARGS if [ "$OPTARG" != "" ]; then echo "Running with extra args: ${OPTARG}" sudo ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -v -e "$OPTARG" site.yml else sudo ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -v site.yml fi
      
      







このファイルの主で唯一のタスクは、同じディレクトリからmyhostsファイル(127.0.0.1のみを含む)で指定されたノードのグループでplaybook site.ymlを実行することであることが、コンテンツからわかります。 次の-c localパラメーターは、ターゲットマシンにコマンドを配信するメカニズムを指定します。この場合、ansibleとターゲットマシンは同じです。



また、好奇心a盛な人から、sudoを使用することが提案されていることがわかります。 しかし、Debianのクリーンインストールがあるため、これはsudoであり、Ubuntuとは異なり、含まれていません。 したがって、コマンドを削除するか、sudoを配信します。

sudo呼び出しを削除し、さらに詳細なデバッグのために2つの文字「v」を追加しました。

編集後のファイルの種類:

 getopts "e:" EXTRA_ARGS if [ "$OPTARG" != "" ]; then echo "Running with extra args: ${OPTARG}" ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -vvv -e "$OPTARG" site.yml else ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -vvv site.yml fi
      
      







それでは、最も興味深いファイルsite.ymlに移りましょう。

 root@awx:~/awx-setup-1.3.1# cat site.yml --- # This playbook deploys the AWX application (database, web and worker) to a # single server. - hosts: all tasks: - name: group hosts by distribution group_by: key="{{ ansible_distribution }}-{{ ansible_distribution_version }}" - hosts: RedHat-6*:CentOS-6*:SL-6* user: root roles: - { role: packages_el6 } - { role: postgres, pg_hba_location: "/var/lib/pgsql/data/pg_hba.conf" } - { role: awx_install } - { role: supervisor, sup_init_name: "supervisord", sup_conf_location: "/etc/supervisord.conf" } - { role: httpd, httpd_init_name: "httpd" } - { role: iptables } - { role: misc } - hosts: Ubuntu-12*:Ubuntu-13* user: root roles: - { role: packages_ubuntu } - { role: postgres, pg_hba_location: "/etc/postgresql/9.1/main/pg_hba.conf" } - { role: awx_install } - { role: supervisor, sup_init_name: "supervisor", sup_conf_location: "/etc/supervisor/conf.d/awx.conf" } - { role: httpd, httpd_init_name: "apache2" } - { role: misc }
      
      







Debianのオプションは表示されませんが、すでに2つの既製のスクリプトのバリエーションがあります。RHELベースのものとUbuntuのものであり、ご存知のようにUbuntuはDebianの直接の子孫です。 Ubuntバージョンのインストールに従って正確にインストールします。このため、このプレイブックにOSの記述を追加します。

 - hosts: Ubuntu-12*:Ubuntu-13*:Debian*
      
      







postgresqlからバージョン9.3をインストールするため、設定ファイルへのパスをわずかに修正します

  - { role: postgres, pg_hba_location: "/etc/postgresql/9.3/main/pg_hba.conf" }
      
      







さもなければ、ここで私たちにとってこれ以上面白いものはありません。

個々の役割を見てみましょう。packages_ubuntuが最初になります

 root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/tasks/main.yml --- # Tasks to install required packages for awx - name: install ubuntu awx apt repository template: src=awx_repo.j2 dest=/etc/apt/sources.list.d/awx_repo.list - name: install python-pip package for ubuntu 12.04 apt: name=python-pip when: ansible_lsb.codename == "precise" - name: install django 1.5.4 via pip for ubuntu 12.04 pip: name=django version=1.5.4 when: ansible_lsb.codename == "precise" - name: install django via apt for ubuntu 12.10 or later apt: name=python-django when: ansible_lsb.codename != "precise" - name: install required packages via apt apt: name={{ item }} with_items: - apache2 - libapache2-mod-wsgi - postgresql - python-psycopg2 - python-setuptools - python-ldap - supervisor - git - subversion - mercurial - name: install awx package via apt apt: name=awx update_cache=yes force=yes state=latest
      
      







関心のある最初のテンプレート行は次のとおりです。src = awx_repo.j2 dest = / etc / apt / sources.list.d / awx_repo.list-リポジトリ接続、ファイルを見てください:

 root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/templates/awx_repo.j2 deb {{ aw_repo_url }}/deb {{ansible_lsb.codename}} non-free
      
      











2つの変数、最初の場合はgroup_vars / allファイルで指定されたリポジトリのURL、2番目の場合はオペレーティングシステムのコード名、すべてが明確なように見えますが、wheezyのリポジトリには何もないので、Ubuntu Raring Ringtailとして偽装します。

「マスキング」後、ファイルは次の形式を取ります。

 root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/templates/awx_repo.j2 deb {{ aw_repo_url }}/deb raring non-free
      
      







次の部分では、Precise Pangolinが一緒にいるかどうかを確認します。

 - name: install python-pip package for ubuntu 12.04 apt: name=python-pip when: ansible_lsb.codename == "precise" - name: install django 1.5.4 via pip for ubuntu 12.04 pip: name=django version=1.5.4 when: ansible_lsb.codename == "precise" - name: install django via apt for ubuntu 12.10 or later apt: name=python-django when: ansible_lsb.codename != "precise"
      
      







彼は古いバージョンのDjangoリポジトリに(Precise Pangolin)を持っているので、AWXの作成者は新しい(1.5.4)代替方法を使用しました。 この問題は私たちを脅かすものではないため、何も変更することはできません。 また、httpdのハンドラファイルの条件を、UbunuからDebianに変更します。

 root@awx:~/awx-setup-1.3.1# cat roles/httpd/handlers/main.yml --- # Handlers for common notifications. - name: restart httpd service: name=httpd state=restarted when: ansible_distribution in ["CentOS","RedHat"] - name: restart apache2 service: name=apache2 state=restarted when: ansible_distribution in ["Ubuntu"]
      
      







Ubuntuの最後の行では、Debianに変更します。

次のpostgresロールに対しても同様のアクションを実行する必要があります。

 root@awx:~/awx-setup-1.3.1# cat roles/postgres/tasks/main.yml # Tasks for configuring PostgreSQL server. - name: init postgresql command: service postgresql initdb creates=/var/lib/pgsql/data/PG_VERSION when: ansible_distribution != "Ubuntu" tags: postgresql
      
      







指を組んで走る

 root@awx:~/awx-setup-1.3.1# ./setup.sh PLAY RECAP ******************************************************************** 127.0.0.1 : ok=30 changed=12 unreachable=0 failed=0
      
      







Apacheセットアップインストーラーがフォルダーに配置します

 root@awx:~/awx-setup-1.3.1# ls /etc/apache2/conf.d awx.conf awx-plain.conf
      
      







このフォルダーの内容はメインのApache構成に含まれていないため、移動する必要があります。

 mv /etc/apache2/conf.d/awx* /etc/apache2/sites-enabled/
      
      







その後、何も複雑ではなく、Apacheを構成し、重複するモジュール呼び出しを削除して使用します。



All Articles