我的项目中的Ansible配置
■前提 (Paraphrased in Chinese)
■假设
目前我们正在参与的项目中使用Ansible,但能够进行维护的团队成员有限。因此,我想简要概述一下Ansible的配置。
■环境
假设在 CentOS 6.x 上执行 Ansible。
■ Ansible的配置
以下是安装Apache和MySQL到服务器的Ansible文件组。
带有「★」标记的部分是可以随意更改的。
server01 ← [★任意のディレクトリ名、Webサーバに展開するAnsibleであれば「web_server」など]
│
└── roles ← [お決まりのディレクトリ名]
│
├── apache ← [★任意のディレクトリ名、タスクの名前にすると分かりやすい]
│ │
│ └── tasks ← [お決まりのディレクトリ名]
│ │
│ └── main.yml ← [お決まりのファイル名]
│
└── mysql ← [★]
│
├── tasks
│ │
│ └── main.yml
│
├── templates ← [お決まりのディレクトリ名]
│ │
│ └── my.cnf.j2 ← [★任意のファイル名、拡張子は「j2」]
│
└── vars ← [お決まりのディレクトリ名]
│
└── main.yml
■ 提取自「main.yml」文件的部分内容
阿帕奇 -> 任务
本文中包含有关Apache的任务,从安装到设置等方面进行描述。
每个任务都要附上“name”和“tags”。
# Apacheのインストール ← [コメント]
- name: install apache ← [Ansibleを実行したときに表示される]
yum: name=httpd state=latest ← [最新のApacheをyumインストール]
tags: apache ← [Ansible実行時に「このtagsの名前のタスクだけ実行!」と指定できる]
本文记录了与MySQL相关的任务,包括MySQL的安装和配置等。
MySQL -> 任务
- name: install mysql
yum: name={{ url }}/{{ item }} state=present ← [インストール済みであればインストールしない、「url」は以下の「vars-main.yml」に記載、「with_items」分実行される]
with_items: ← [複数ある場合は以下のように複数記載]
- MySQL-client-{{ version }}.el6.x86_64.rpm ← [「version」は以下の「vars-main.yml」に記載]
- MySQL-shared-compat-{{ version }}.el6.x86_64.rpm
tags: mysql
MySQL -> 变量
url: http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.5/ ← [MySQLダウンロード先URL]
version: 5.5.46-1 ← [MySQLバージョン]
■(稍微进阶版)我想要定义在全部任务中使用的变量!
在这种情况下,您需要在“server01”目录的同一级别创建一个名为“group_vars”的目录,并在其中创建任意文件以定义变量。
server01
group_vars
│
└── server ← [★任意のファイル名]
在上述的”server”文件中,按照以下方式描述,您将能够在所有的main.yml文件中使用已定义的变量”hoge_user”和”hoge_version”。
---
hoge_user: hogeuser
hoge_version: 1.2.3
■最后
使用Ansible的过程会很辛苦,但一旦完成后,环境创建就会变得非常容易。
只需一个命令,就能多次创建相同的环境,真是太方便了。
不要害怕Ansible!与Ansible合作,让我们一起享受乐趣!
由於除了Ansible以外還有許多配置管理工具,因此我希望在未來嘗試一下比Ansible更輕鬆的工具。