マゴN 49第十七週作業

5005 ワード

1、ansibleのplaybookを使ってhttpdの自動化を実現する
1.1変更/etc/ansible/hostsファイルwebserversクラスタの追加
[root@localhost ansible]# cat hosts 
[webservers]
10.0.0.57


1.2メインプロファイルrole_の作成httpd.yml
[root@localhost ansible]# cat role_httpd.yml 
---
# httpd role
- hosts: webservers
  remote_user: root
  
  roles:
    - httpd
[root@localhost ansible]# 

1.3関連ディレクトリとファイルの作成
[root@localhost ansible]# tree roles
roles
└── httpd
    ├── files
    │   ├── apr-1.7.0.tar.bz2
    │   ├── apr-util-1.6.1.tar.bz2
    │   ├── httpd-2.4.46.tar.gz
    │   ├── httpd.conf
    │   └── httpd.service
    ├── handlers
    │   └── main.yml
    └── tasks
        ├── config.yml
        ├── group.yml
        ├── install.yml
        ├── main.yml
        ├── service.yml
        ├── unarch_httpd.yml
        └── user.yml

4 directories, 13 files
[root@localhost ansible]# 

1.4 Playbookの作成
cat roles/httpd/tasks/group.yml 
- name: create apache group
  group: name=apache system=yes gid=80
cat roles/httpd/tasks/user.yml 
- name: create apache user
  user: name=apache system=yes shell=/sbin/nologin home=/var/www/ uid=80 group=apache
cat roles/httpd/tasks/unarch_httpd.yml 
- name: unarchive httpd
  unarchive: src=httpd-2.4.46.tar.gz dest=/usr/local/src/ copy=yes
- name: unarchive apr 
  unarchive: src=apr-1.7.0.tar.bz2 dest=/usr/local/src/ copy=yes
- name: unarchive apr-util
  unarchive: src=apr-util-1.6.1.tar.bz2 dest=/usr/local/src/ copy=yes
cat roles/httpd/tasks/install.yml 
- name: install dependency package
  yum: 
    name: [gcc,pcre-devel,openssl-devel,expat-devel] 
    state: present

- name: install apr 
  shell: mv /usr/local/src/apr-1.7.0 /usr/local/src/httpd-2.4.46/srclib/apr
  
- name: install apr-util
  shell: mv /usr/local/src/apr-util-1.6.1 /usr/local/src/httpd-2.4.46/srclib/apr-util 

- name: install httpd
  shell: cd /usr/local/src/httpd-2.4.46 && ./configure --prefix=/apps/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre  \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=event \
&& make && make install
cat roles/httpd/tasks/config.yml 
- name: httpd conf file
  copy: src=httpd.conf dest=/apps/httpd24/conf/
  notify: restart
cat roles/httpd/tasks/service.yml 
- name: copy httpd.conf
  copy: src=httpd.service dest=/usr/lib/systemd/system/ 

- name: auto start apache
  service: name=httpd state=started enabled=yes

cat roles/httpd/tasks/main.yml 
- include: group.yml
- include: user.yml
- include: unarch_httpd.yml
- include: install.yml
- include: config.yml
- include: service.yml
cat roles/httpd/handlers/main.yml 
- name: restart
  service: name=httpd state=restarted
cat /etc/ansible/role_httpd.yml
---
# httpd role
- hosts: webservers
  remote_user: root
  
  roles:
    - httpd

1.5 playbookの文法をチェックする
ansible-playbook role_httpd.yml -C

1.6プレイブックの実行
ansible-playbook role_httpd.yml 

2、httpdサーバーを創立して、2つの名称に基づく仮想ホストを提供することを要求する:
2.1 www.X.com、ページファイルディレクトリは/web/vhosts/xである.エラー・ログは/var/log/http/x.err、アクセス・ログは/var/log/http/x.access
2.1.2メインプロファイルにvhostsプロファイルの格納ディレクトリを追加する
echo "include conf/vhosts/*/*.conf" >> /apps/httpd24/conf/httpd.conf
mkdir /apps/httpd24/conf/vhosts/{X,Y} -pv
mkdir /var/log/httpd
mkdir /web/vhosts/{x,y} -pv

2.1.3仮想ホストX.confの作成

ServerName www.X.com
DocumentRoot "/web/vhosts/x"
ErrorLog "/var/log/httpd/x.err"
CustomLog "/var/log/httpd/x.access" combined

Options None
AllowOverride None
Require all granted



2.2 www.Y.com、ページファイルディレクトリは/web/vhosts/yである.エラーログは/var/log/http/www 2.err、アクセスログは/var/log/http/y.access
2.2.1仮想ホストY.confの作成

ServerName www.Y.com
DocumentRoot "/web/vhosts/y"
ErrorLog "/var/log/httpd/www2.err"
CustomLog "/var/log/httpd/y.access" combined

Options None
AllowOverride None
Require all granted



2.3 2つの仮想ホストに対してそれぞれのホームページファイルindex.htmlを作成し、内容はそれぞれその対応するホスト名である.
2.3.1編集/web/vhosts/x/index.html
echo www.X.com > /web/vhosts/x/index.html

2.3.2編集/web/vhosts/y/index.html
echo www.Y.com > /web/vhosts/y/index.html

2.3.3 httpdの再起動
systemctl restart httpd

2.3.4 hostsファイルを修正し、ドメイン名解析を追加する
cat /etc/hosts
10.0.0.57 www.X.com www.Y.com

2.3.5アクセステスト
[root@localhost ~]# curl www.X.com
www.X.com
[root@localhost ~]# 
[root@localhost ~]# curl www.Y.com
www.Y.com