尝试使用Ansible创建LAMP环境是第一次

首先

使用Ansible创建LAMP环境。
要创建的服务器已经完成了用户注册。
详细信息请参考以下文章。
尝试进行CentOS7的初始设置。

如果只想看代码的人,请点击这里。

环境

CentOS7 送信
ansible 2.4.2.0

Ansible 是什么?

这是一个能够自动化系统构建和运维的工具。从已安装Ansible的服务器上通过SSH连接来操作目标服务器。可以同时操作任意台数,并能够完全应用相同的配置。

构成

Ansible主要由以下三个文件组成。

库存

设置要管理哪个服务器

ansible配置文件

设定发明文件的位置

剧本 (jù

设定您想要的配置。这类似于构建步骤的手册。
这个文件将成为Ansible的核心部分。
(例如:通过yum安装并启动httpd)

主机服务器(发出指令的服务器)的配置

安装Ansible

在安装之前,由于需要一个名为epel的仓库,因此将使用yum一并进行安装。

# yum install epel-release.noarch
# yum install ansible
$ ansible --version
ansible 2.4.2.0

使用钥匙认证来设置登录

制作钥匙并向希望操作的服务器提供公钥,使其能够通过SSH连接。

$ ssh-keygen -t rsa
$ ssh-copy-id -p ポート番号 ユーザ名@IPアドレス
$ ssh -p ポート番号 ユーザ名@IPアドレス

让我们来创建一个库存。

文件名可以是任何名称。
通过在[]中输入任意的组名,可以将服务器分组进行操作。
$ vim清单

[lamp]
IPアドレス:ポート番号

我创建了一个名为“lamp”的组,并注册了要操作的服务器信息。

让我们创建ansible.conf。

通过指定所创建的inventory文件,可以执行操作,但是通过在ansible.cfg文件中记录inventory文件的路径,可以实现无需指定文件即可执行操作。在vim命令下,编辑ansible.cfg文件。

[defaults]
inventory = ./inventory

我们立即执行吧!

我将执行ping命令来测试lamp组的连通性。
(如果要针对所有服务器执行,请将”lamp”更改为”all”)

$ ansible lamp -m ping
IPアドレス | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

让我们试着创建一个Playbook。

我将在Playbook中记录安装Apache、MySQL和PHP的步骤。

安装并启动Apache,并设置自动启动。

我将以yml格式进行描述。

vim playbook.yml 可以进行如下的本地化转述:

使用 vim 打开 playbook.yml 文件。

---
- hosts: lamp
  sudo : yes
  tasks:
    - name: install httpd
      yum: name=httpd state=latest
    - name: apache start / enable
      service: name=httpd state=started enabled=yes

我将按顺序一一解释。
– hosts是用来指定要操作的服务器。本次操作的目标是“lamp”组。
sudo是为了给予sudo权限。
在tasks中,我们将描述要做的事情。
– name是任意的名字。为了方便理解,给出一个明确的标题。
在yum的name中指定要安装的httpd,并使用state=latest选择最新版本。
在service的name中指定httpd,并使用state=started启动它。同时,enabled=yes设置自动启动。

安装并启动MySQL,然后进行自动启动的设置。

我会继续在刚才创建的文件中添加内容。

    - name: install mysql repository
      yum: name=http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm state=present
    - name: install mysql
      yum: name=mysql-server state=latest
    - name: mysql start / enable
      service: name=mysqld state=started enabled=yes

基本上与 Apache 时一样。
由于 CentOS 7 的 yum 包中没有 mysql-server,
需要先安装仓库,然后再安装 mysql。

如果状态为present(在这种情况下,如果已安装mysql-server),则不进行任何操作。

安装PHP并重新启动Apache。

    - name: install php
      yum: name={{item}} state=latest
      with_items:
        - php
        - php-devel
        - php-mbstring
        - php-mysql
        - php-gd
      notify:
        - httpd restart
  handlers:
    - name: httpd restart
      service: name=httpd state=restarted

在{{item}}中设置变量。内容写在with_items中。
通过指定通知名称,您可以在PHP安装完成后执行一次处理。
在handlers中,您可以指定PHP安装完成后的处理过程。将名称与之前指定的通知名称对应起来。
在这里,我们配置了当PHP安装完成后重新启动apache。

让我们来运行Ansible吧!

在执行之前,您可以确认playbook的语法是否正确。

ansible-playbook playbook.yml --syntax-check

此外,您可以通过模拟来预测实际执行的结果会如何。

ansible-playbook playbook.yml --ask-become-pass --check

如果在sudo中设置了密码,则需要使用ask-become-pass。

如果没有问题,您可以使用以下命令来执行。

ansible-playbook playbook.yml --ask-become-pass

总结

只要成功执行一次并安装完成后,再次执行就不会生效。
因此,一旦编写好playbook,就可以立即执行并不断添加设置,
所以我比想象中更加顺畅地进行了操作。

在構建測試伺服器時,如果直接執行,就可以自動創建相同的伺服器,所以我想要積極地使用它!它還可以複製文件,所以在脆弱性對應時,可以通過修改設定文件來進行集中升級。

对我来说,剩下的就是playbook文件就像是一本建构流程书,通过它我可以回顾自己做过什么事情,这令我感到非常震撼!

广告
将在 10 秒后关闭
bannerAds