!!📢說明!!
- 🚫 1,請勿轉載本文相關內容到中國大陸任何媒體社交平臺. .
- 📢 2,所有實驗均運行與Arch Linux系統之上,並非Windows,但和Windows步驟是一樣的. .
- 📢 3,實驗中使用Vmware-Workstation虛擬化軟體,軟件來源自互聯網. .
- 📢 3,實驗中用到的所有軟體,均會採用最新版本,遵循Arch理念. .
🔧實驗準備.
- 🔧 準備好 基本實驗環境搭建..
實驗環境
👀 實驗環境.
| 設備名稱 | 主機名稱 | 接口對應關係 | IPV4地址 | 虛擬網卡網段 |
|---|---|---|---|---|
| 虛擬機1 | controller | eth0->vmnet21 eth1->vmnet25 | 192.168.21.21 10.10.21.21 | vmnet21: 192.168.21.0/24 |
| 虛擬機2 | compute | eth0->vmnet21 eth1->vmnet25 | 192.168.21.25 10.10.21.25 | vmnet25: 10.10.21.25.0/24 |
之後所有都有這張表格,所以請記住,你在哪,你是誰,你在幹什麼.
RUN
嚯,終於來到了我們最喜歡的開發部分了.
题目1: 编写 Shell 一键部署脚本[1.0 分]
编写一键部署 nfs 云网盘应用系统,在 OpenStack 私有云平台,创建一台云主机,
使用提供的软件包,在 root 目录下编写一键部署脚本install_owncloud.sh,要求可以一键部署
owncloud 云网盘应用系统。完成后提交节点的IP地址,用户名和密码到答题框。
老規矩先上一波圖.




controller主機執行.
#!/usr/bin/env bash
# root权限检测.
if (( `id -u` != 0 )); then
printf '请使用root权限执行脚本.\n'
exit 0
fi
# URL 定义,参数1 指定URL.
if ! [ $1 ]; then
_Download_URL='http://10.43.3.222:523/owncloud-8.2.11.zip'
else
_Download_URL=$1
fi
# 數據庫用户,密碼密码,數據庫名稱定義.
DB_USER='owncloud'
DB_PASSWORD='000000'
DB_NAME='owncloud'
printf '安裝運行環境.\n'
yum -y update >/dev/null 2>&1
yum -y install wget curl unzip httpd php php-mysql php-pecl-zip php-intl php-mbstring php-gd php-dom php-xml php-mcrypt mariadb-server >/dev/null 2>&1
printf '啓動服務.\n'
systemctl daemon-reload
systemctl enable --now httpd &&systemctl enable --now mariadb >/dev/null 2>&1
printf '安全的 MariaDB 安裝.\n'
mysql_secure_installation <<EOF
y
$DB_PASSWORD
$DB_PASSWORD
y
y
y
y
EOF
printf '下載OwnCloud源碼.\n'
wget ${_Download_URL} >/dev/null 2>&1
printf '解壓源碼.\n'
unzip owncloud*.zip >/dev/null 2>&1
printf '配置源碼.\n'
mv owncloud /var/www/html/
chown -R apache:apache /var/www/html/owncloud
printf '建立數據庫用戶,和數據庫.\n'
mysql -u root -p$DB_PASSWORD <<EOF
CREATE DATABASE $DB_NAME;
CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';
GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';
FLUSH PRIVILEGES;
EOF
systemctl restart mariadb
printf '配置 Apache.\n'
cat << EOF >/etc/httpd/conf.d/owncloud.conf
Alias /owncloud "/var/www/html/owncloud/"
<Directory /var/www/html/owncloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/owncloud
SetEnv HTTP_HOME /var/www/html/owncloud
</Directory>
EOF
printf '重启Apache.\n'
systemctl restart httpd
printf 'OwnCloud has been successfully installed!\n'
printf 'Open the: http://your-server-ip/owncloud\n'题目2,Ansible 服务部署:部署 ELK 集群服务[2 分]
编写 Playbook,部署的 ELK。
使用赛项提供的 OpenStack 私有云平台,创建三台 CentOS7.9 系统的云主机分别命名
为 elk-1、 elk-2 和 elk-3, Ansible 主机可以使用上一题的环境。要求 Ansible 节点编写
剧本,执行 Ansible 剧本可以在这三个节点部署 ELK 集群服务(在/root 目录下创建
install_elk 目录作为 ansible 工作目录,部署的入口文件命名为 install_elk.yaml)。
具体要求为三个节点均安装 Elasticserach 服务并配置为 Elasticserach 集群; kibana 安
装在第一个节点; Logstash 安装在第二个节点。(需要用到的软件包在 HTTP 服务下)完成
后提交 ansible 节点的用户名、密码和 IP 地址到答题框。(考试系统会连接到 ansible 节
点,执行 ansible 脚本,准备好环境,以便考试系统访问)
#ansible playbook Cento7 ELK集群
- hosts: elk-1
remote_user: root
tasks:
- name: Config elk-1 hostname
shell: hostnamectl set-hostname elk-1
- hosts: elk-2
remote_user: root
tasks:
- name: Config elk-2 hostname
shell: hostnamectl set-hostname elk-2
- hosts: elk-3
remote_user: root
tasks:
- name: Config elk-3 hostname
shell: hostnamectl set-hostname elk-3
- hosts: all
remote_user: root
tasks:
- name: disable selinux
shell: sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
- name: Copy package and file
copy:
src: "{{item.src}}"
dest: "{{item.dest}}"
with_items:
- {src: 'config_server.sh', dest: '/tmp'}
- {src: "elasticsearch-6.0.0.rpm", dest: '/root'}
- {src: "kibana-6.0.0-x86_64.rpm", dest: '/root'}
- {src: "logstash-6.0.0.rpm", dest: '/root'}
- name: run script
shell: bash /tmp/config_server.sh
- name: delete script
shell: rm /tmp/*sh
#--配置yum源..<可省略>
- name: Config system
shell: |
mkdir /root/backup
cp -avr /etc/yum.repos.d /root/backup
rm -f /etc/yum.repos.d/*
mkdir /mnt/{0,1,2,3,4,5,6,7,8,9}
mount -t cifs -o username=whoami,password=whoami //172.129.22.1/lmd /media
cp -v /media/mount.sh /root
umount -l /media
/root/mount.sh mount
yum makecache
cp -v /media/allrepo.repo /etc/yum.repos.d/
yum -y install bash-com* vim
- name: Install JAVA
shell: yum -y install java-1.8.0-*
- name: Install elk
shell: rpm -ivh /root/elasticsearch-6.0.0.rpm
- hosts: elk-1
remote_user: root
tasks:
- name: copy config
copy: src=elk1.yml dest=/etc/elasticsearch/elasticsearch.yml
- name: daemon-reload
shell: systemctl daemon-reload
- name: start elk
shell: systemctl enable --now elasticsearch
- name: install kibana
shell: rpm -ivh /root/kibana-6.0.0-x86_64.rpm
- name: copy config
template: src=kibana.yml dest=/etc/kibana/kibana.yml
- name: start kibana
shell: systemctl enable --now kibana
- hosts: elk-2
remote_user: root
tasks:
- name: copy config
copy: src=elk2.yml dest=/etc/elasticsearch/elasticsearch.yml
- name: daemon-reload
shell: systemctl daemon-reload
- name: start elk
shell: systemctl enable --now elasticsearch
- name: install logstash
shell: rpm -ivh /root/logstash-6.0.0.rpm
- name: copy config
copy: src=logstash.yml dest=/etc/logstash/logstash.yml
- name: copy config
copy: src=syslog.conf dest=/etc/logstash/conf.d/syslog.conf
- name: set message
shell: chmod 644 /var/log/messages
- name: start logstash
shell: systemctl daemon-reload &&systemctl enable --now logstash.service
- hosts: elk-3
remote_user: root
tasks:
- name: copy config
copy: src=elk3.yml dest=/etc/elasticsearch/elasticsearch.yml
- name: daemon-reload
shell: systemctl daemon-reload
- name: start elk
shell: systemctl enable --now elasticsearch

