先在ansible主机上下载安装apache需要的文件
[root@ansible playbook]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz [root@ansible playbook]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz [root@ansible playbook]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.48.tar.gz
然后解压到本机上
[root@ansible playbook]# ls apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.48.tar.gz [root@ansible playbook]# mkdir files [root@ansible playbook]# tar -xf apr-1.7.0.tar.gz -C files/ [root@ansible playbook]# tar -xf apr-util-1.6.1.tar.gz -C files/ [root@ansible playbook]# tar -xf httpd-2.4.48.tar.gz -C files/ [root@ansible playbook]# ls files/ apr-1.7.0 apr-util-1.6.1 httpd-2.4.48 [root@ansible playbook]#
然后写playbook文件
[root@ansible project]# cat playbook/apache.yml --- - name: install apache hosts: all vars: apr_name: apr-1.7.0 apr_util_name: apr-util-1.6.1 httpd_name: httpd-2.4.48 tasks: - name: copy apr copy: src: files/{{apr_name}} dest: /root/ - name: copy apr-util copy: src: files/{{apr_util_name}} dest: /root/ - name: copy httpd copy: src: files/{{httpd_name}} dest: /root/ - name: stop firewalld service: name: firewalld state: stopped enabled: no - name: stop selinux lineinfile: path: /etc/selinux/config regexp: "^SELINUX=" line: "SELINUX=disabled" state: present - name: install utils yum: name: "{{item}}" state: present with_items: - openssl-devel - pcre-devel - pcre - perl - perl-devel - expat-devel - libtool - gcc - make - gcc-c++ - name: edit config lineinfile: path: /root/{{apr_name}}/configure regexp: '^ $RM "$cfgfile"' line: '# $RM "$cfgfile"' - name: install apr shell: | cd /root/apr-1.7.0 ./configure --prefix=/usr/local/apr make && make install - name: install apr-util shell: | cd /root/apr-util-1.6.1 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install - name: install httpd shell: | cd /root/httpd-2.4.48 ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util make && make install - name: edit httpd config lineinfile: path: /usr/local/httpd/conf/httpd.conf regexp: "^#ServerName www.example.com:80" line: "ServerName www.example.com:80" - name: start httpd shell: '/usr/local/httpd/bin/apachectl start' [root@ansible project]#
查看测试结果