Ansibleは、オープンソースの構成管理およびアプリケーション展開ツールです。アプリのデプロイを自動化し、ITインフラストラクチャを管理することで、管理オーバーヘッドを削減できます。
ansibleを使用する Ubuntu20.04にapache2ウェブサーバーをインストールします。そのために、 Ansible Playbooksと呼ばれるYAML構文で構成を作成する必要があります 。
通常、制御ノードとホストノードがあります。 Ansibleはコントロールノードにインストールされ、プレイブックを実行してホストノードにデプロイします。このラボでは、単一ノードにインストールして使用します。
Ubuntuへのansibleのインストール
まず、システムを更新します。次のコマンドは、最新のパッケージをフェッチします。
$ sudo apt update
Ansibleは、Ubuntu20.04のベースリポジトリで利用できます。 ansibleをインストールするには、次のコマンドを実行します:
$ sudo apt install ansible -y
次に、コマンド
を使用してAnsibleのバージョンを確認します。$ ansible --version
ホスト構成ファイルは/etc/ ansible/hostsファイルに保存されます。次のコマンドを使用して、ローカルホストサーバーのIPをファイルに追加します。 sudoユーザーがいることを確認してください。この場合、「ubuntu」にはsudo特権があります。ここでは、「myserver」という名前を付けました。自分で名前を付けることができます。また、ユーザーubuntuはシステム内のsudoユーザーであることを忘れないでください。
$ echo "myserver ansible_host=127.0.0.1 ansible_user=ubuntu" >> /etc/ansible/host
コマンドを使用して確認するだけです
$ ansible myserver -m ping
下のスクリーンショットのようなポン応答が返されるはずです。
プレイブックの作成
それでは、「apache.yml」という名前のプレイブックを作成して、最新のapacheWebサーバーをインストールして実行しましょう。
$ vi apache.yml
次のコンテンツをファイルに追加します
---
- hosts: myserver
become: true
vars:
- vars/default.yml
- tasks:
- name: Install latest version of Apache
apt: name=apache2 update_cache=yes state=latest
- name: Create document root for your domain
file:
path: "/var/www/{{ http_host }}"
state: directory
owner: "{{ app_user }}"
mode: '0755'
- name: Copy your index page
template:
src: "files/index.html.j2"
dest: "/var/www/{{ http_host }}/index.html"
- name: Set up virtuahHost
template:
src: "files/apache.conf.j2"
dest: "/etc/apache2/sites-available/{{ http_conf }}"
notify: restart-apache
- name: "UFW firewall allow HTTP on port {{ http_port }}"
ufw:
rule: allow
port: "{{ http_port }}"
proto: tcp
handlers:
- name: restart-apache
service:
name: apache2
state: restarted
ここで
- ホスト :/ etc / ansible/hostsファイルで定義したホスト名です
- になる:true sudoであるための特権昇格です
- vars :変数を定義するため
- タスク :4つのタスクが定義されています。 Apacheのインストール、インデックスページのコピー、仮想ホストの設定、UFWファイアウォールからのhttpの許可(すでに有効になっている場合)。
- ハンドラー :他のすべてのタスクが成功した場合にapacheを再起動します。
プレイブックに加えて、他の3つのファイルvars / default.yml、files / apache.conf.j2、files/index.html.j2を定義する必要があります。それらを1つずつ作成しましょう。
vars / default.yml
default.ymlファイルには、ドメイン名、構成ファイルの場所、およびhttpポートが含まれています。ファイルを作成し、以下を追加します。
http_host: "mydomain.local"
http_conf: "my_domain.conf"
http_port: "80"
files / apache.conf.j2
apache構成テンプレートには、仮想ホストの構成が含まれています。変数は{{}}内で定義され、上記で定義されたvarsファイルから取得されます。 apache.conf.jsファイルを作成し、次のコンテンツを追加します。
<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
files / index.html.j2
もう1つのテンプレートは、インデックスファイルです。ファイルを作成し、次のコンテンツを追加します。要件に応じて変更できます。
<html>
<head>
<title>{{ http_host }}</title>
</head>
<body>
<h1>Welcome to {{ http_host }}</h1>
</body>
</html>
これで、次のコマンドを使用してansible-playbookを実行できます。
$ ansible-playbook apache.yml --ask-become-pass
sudoユーザーのパスワードを入力するように求められます。以下に示すように、ステータスは正常である必要があります。
これにより、デフォルトのポート80でもApacheが実行され、お気に入りのブラウザでローカルホストを参照していることを確認できます。
結論
Ansibleはエージェントレスであり、構成の記述が簡単なため、便利なツールです。 Ansibleの公式ドキュメントからより多くの構成を参照できます。 ansibleでプレイブックを書いているときに問題が発生した場合は、コメントしてください。