我的项目中的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更輕鬆的工具。

广告
将在 10 秒后关闭
bannerAds