我尝试使用Ansible来安装Apache的备忘录
尝试使用Ansible在CentOS 6和CentOS 7上安装Apache。
我尝试写了一本剧本。
我想做的是:
– 使用yum安装apache
– 启动httpd进程
– 使用iptables或firewalld设置80端口
– 如果有iptables/firewalld的更改,重新启动进程
所以,我尝试写的内容如下。
---
- hosts: kobatest
tasks:
- name: install apache
yum: name=httpd
- name: CentOS6 start httpd
service: name=httpd state=restarted
when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "6")
- name: CentOS7 start htpd
systemd: name=httpd state=restarted
when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "7")
- name: iptables allow port 80
lineinfile: dest=/etc/sysconfig/iptables line="-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT" insertafter="^:OUTPUT "
notify: restart iptables
when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "6")
- name: firewall-cmd allow port 80
command: firewall-cmd --permanent --add-port=80/tcp
notify: restart firewalld
when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "7")
handlers:
- name: restart iptables
service: name=iptables state=restarted
- name: restart firewalld
service: name=firewalld state=restarted
CentOS 6和7有一些差异,比如service/systemd和iptables/firewalld的区别。
关于服务的启动,暂时来说
服务:
服务名称:httpd 状态:重启
systemd: name=httpd state=restarted
systemd:名字=httpd 状态=重启
我尝试写了一下。
根据版本的不同,我想要切换执行,所以可以用以下的写法来完成(例如:当操作系统是CentOS且版本为7的情况下)。
当:(ansible_distribution == “CentOS” and ansible_distribution_major_version == “7”)。
由于还没有调查firewalld的设置,所以暂时使用命令选项进行操作。
2. 我试着执行了一下。
这是结果。
# ansible-playbook apache.yml
PLAY [kobatest] *************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************
ok: [brighton002]
ok: [brighton003]
TASK [install apache] *******************************************************************************************
changed: [brighton002]
changed: [brighton003]
TASK [CentOS6 start httpd] **************************************************************************************
skipping: [brighton003]
changed: [brighton002]
TASK [CentOS7 start htpd] ***************************************************************************************
skipping: [brighton002]
changed: [brighton003]
TASK [iptables allow port 80] ***********************************************************************************
skipping: [brighton003]
changed: [brighton002]
TASK [firewall-cmd allow port 80] *******************************************************************************
skipping: [brighton002]
changed: [brighton003]
RUNNING HANDLER [restart iptables] ******************************************************************************
changed: [brighton002]
RUNNING HANDLER [restart firewalld] *****************************************************************************
changed: [brighton003]
PLAY RECAP ******************************************************************************************************
brighton002 : ok=5 changed=4 unreachable=0 failed=0
brighton003 : ok=5 changed=4 unreachable=0 failed=0
一切都已经过了。途中出现了一个引导句子的句法,可以理解为被跳过了。
3. 确认幂律控制
试着去执行一下嘛。
# ansible-playbook apache.yml
PLAY [kobatest] *************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************
ok: [brighton002]
ok: [brighton003]
TASK [install apache] *******************************************************************************************
ok: [brighton002]
ok: [brighton003]
TASK [CentOS6 start httpd] **************************************************************************************
skipping: [brighton003]
changed: [brighton002]
TASK [CentOS7 start htpd] ***************************************************************************************
skipping: [brighton002]
changed: [brighton003]
TASK [iptables allow port 80] ***********************************************************************************
skipping: [brighton003]
ok: [brighton002]
TASK [firewall-cmd allow port 80] *******************************************************************************
skipping: [brighton002]
changed: [brighton003]
RUNNING HANDLER [restart firewalld] *****************************************************************************
changed: [brighton003]
PLAY RECAP ******************************************************************************************************
brighton002 : ok=4 changed=1 unreachable=0 failed=0
brighton003 : ok=5 changed=3 unreachable=0 failed=0
除了安装以外,幂等性没有得到保证……在这方面比厨师更加困难。关于这个问题,下次调查。