我尝试使用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

除了安装以外,幂等性没有得到保证……在这方面比厨师更加困难。关于这个问题,下次调查。