尝试使用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文件就像是一本建构流程书,通过它我可以回顾自己做过什么事情,这令我感到非常震撼!