创建虚拟机并使用Ansible构建Web服务器
整个组织的结构
我是第一次撰写文章。由于我还是一位刚刚成为工程师的新人,所以如果有任何错误的描述或其他方面,还请您能够指出,我将不胜感激。
这次我会将其作为备忘录写下来。
我们以整体为目标追求这样的结构。

-
- VM1にAnsibleを導入
-
- 導入したAnsibleでVM2にapacheを導入し、webサーバーを構築する
- 構築したwebサーバにMacからアクセスする。
创建虚拟机
環境
ホストOS:Mac
VM1:centOS7.2
VM2:centOS7.2
前提
vagrant導入済(ver 5.2)
VirtualBox導入済(ver 2.2.3)
Vagrantfile的内容如下所示。
Vagrant.configure(2) do |config|
config.vm.define "ansible_server" do |vm01|
vm01.vm.box = "bento/centos-7.2"
vm01.vm.hostname = "ansible-server"
vm01.vm.network :private_network, ip: "192.168.1.10"
vm01.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2210
vm01.vm.network :forwarded_port, id: "http", guest: 80, host: 3400
end
config.vm.define "ansible_target" do |vm02|
vm02.vm.box = "bento/centos-7.2"
vm02.vm.hostname = "ansible-target"
vm02.vm.network :private_network, ip: "192.168.1.20"
vm02.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2220
vm02.vm.network :forwarded_port, id: "http", guest: 80, host: 3500
end
end
使用 `vagrant up` 命令启动虚拟机 VM1 并进行 SSH 连接。我已经以 root 权限成功登录。初始密码为 “vagrant”。
vagrant up
$ ssh root@localhost -p 2210
root@localhost's password:
[root@ansible-server ~]#
使用Ansible进行安装
我們將立即安裝 Ansible。
[root@ansible-server ~]# yum install ansible
要使用 Ansible 对目标服务器进行配置管理,需要确保目标服务器可以进行 SSH 通信。因此,将公钥发送到目标服务器,以便能够进行 SSH 通信。
[root@ansible-server ~]# ssh-keygen -t rsa
[root@ansible-server ~]# ssh-copy-id root@192.168.1.20
提供服务
我创建了一个名为「web」的文件夹,并在那里进行了操作。
我按照下面的配置进行了配置。 (Wǒ de le .)
[root@ansible-server web]# tree
.
├── apache.yml
├── files
│ └── index.html
└── hosts
在hosts文件中,您需要写下Ansible要进行配置的服务器的IP地址。
[ansible-target]
192.168.1.20
apache.yml是Ansible自动处理的任务,根据以下方式编写。
- name: install and start apache
hosts: ansible-target
become: yes
tasks:
- name: httpd package is present
yum:
name: httpd
state: latest
- name: latest index. html file is present
copy: src=./files/index.html dest=/var/www/html/
- name: httpd is started
service:
name: httpd
state: started
- name: start firewalld
command: systemctl start firewalld.service
- name: open 80
command: firewall-cmd --zone=public --add-service=http --permanent
- name: restart firewall
command: firewall-cmd --reload
index.html在这里。
<p>herohero</p>
在实际进行配置之前,我使用了–check选项进行确认。
ansible-playbook --check -i hosts apache.yml
PLAY [install and start apache] **************************************************************************************************************************
・
・
PLAY RECAP ***********************************************************************************************************************************************
192.168.1.20 : ok=4 changed=3 unreachable=0 failed=0
在这个实施中,当然会排除掉。
[root@ansible-server web]# ansible-playbook -i hosts apache.yml
・
・
PLAY RECAP ***********************************************************************************************************************************************
192.168.1.20 : ok=7 changed=6 unreachable=0 failed=0
当使用vagrant创建虚拟机时,我对80号端口进行了3500号端口的转发设置,所以当访问localhost:3500时与稍微不同版本和内容的检查上有一些差异。

我已经成功连接了。
这次遇到了困难的地方
为什么仅仅开放端口80时,无法从Mac上访问?
经过一番调查,我发现有一篇文章中写道,通过进行端口转发即可访问。所以我在Vagrantfile的设置中添加了HTTP端口转发设置,然后就能够访问了。
此外,我在创建VM2时没有使用Ansible进行防火墙设置,保持了默认设置,仍然可以通过localhost:3500进行访问。
我会继续学习这方面的网络知识。
我非常感谢您提供的信息参考页 https://qiita.com/t_nakayama0714/items/fe55ee56d6446f67113c ,对于描述部分我在这个页面上得到了很多帮助。