Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken
項目需求
?
需求一.、使用gitlab創(chuàng)建項目
需求二、 使用ansible的roles實現(xiàn)一鍵化部署wordpress
? ? ? ? ? ? ? ?每次部署需要備份之前的網(wǎng)站數(shù)據(jù)
? ? ? ? ? ? ? ?使用roles
? ? ? ? ? ? ? ?使用templates
? ? ? ? ? ? ? ?腳本對網(wǎng)站監(jiān)控檢測? ? ? ? ??
需求三、 完成之后項目上傳至gitlab
?
項目部署環(huán)境
?
centos7
Gitlab服務(wù)器: 10.220.5.137
Ansible服務(wù)器: 10.220.5.138
wordpress服務(wù)器1: 10.220.5.139
防火墻以及selinux關(guān)閉狀態(tài)
?
創(chuàng)建gitlab項目
?
使用gitlab創(chuàng)建一個項目
相信大家對這個已經(jīng)很熟悉了,所以我就不再詳細(xì)演示該過程
第一步:打開瀏覽器創(chuàng)建項目
這里我創(chuàng)建了一個wordpress的項目
?
上傳安裝包到遠(yuǎn)程倉庫
?
上傳wordpress到gitlab
第一步:創(chuàng)建目錄
[root@ken ~]# mdkir /k [root@ken ~]# cd /k?
第二步:找到遠(yuǎn)程倉庫的位置
?
第三步:下載遠(yuǎn)程倉庫項目
[root@ken k]# git clone http://10.220.5.137/webg1/wordpress.git Cloning into 'wordpress'... Username for 'http://10.220.5.137': root Password for 'http://root@10.220.5.137': remote: Counting objects: 1045, done. remote: Compressing objects: 100% (957/957), done. remote: Total 1045 (delta 68), reused 1042 (delta 68) Receiving objects: 100% (1045/1045), 4.14 MiB | 0 bytes/s, done. Resolving deltas: 100% (68/68), done. [root@ken k]#?
第四步:上傳本地安裝包至遠(yuǎn)程目錄
[root@ken k]# git add wordpress [root@ken k]# git commit -m "v1" [root@ken k]# git push?
第五步:web端查看
編寫ansible劇本
?
上一篇博客已經(jīng)詳細(xì)講解了有關(guān)roles的使用,這里我們依然是使用roles來完成該項目
第一步:創(chuàng)建相關(guān)目錄
在ansible服務(wù)器端操作
[root@ken ~]# mkdir /project/roles/wordpress/{vars,tasks,files,templates} -pv?
第二步:編寫templates模版
[root@ken ~]# cp /etc/httpd/conf/httpd.conf /project/roles/wordpress/templates/httpd.conf.j2[root@ken ~]# grep -v -E '^#|^$| +#' /project/roles/wordpress/templates/httpd.conf.j2ServerRoot "/etc/httpd"Listen {{ port }} #定義成變量Include conf.modules.d/*.confUser {{ user }} #定義成變量Group apacheServerAdmin root@localhostServerName {{ ansible_eth0.ipv4.address }} #引用內(nèi)置變量DocumentRoot {{ root }} #定義成變量?
第三步:編輯hosts配置文件
[root@ken project]# vim /etc/ansible/hosts [devser] 10.220.5.139?
第四步:編寫測試文件
[root@ken project]# vim roles/wordpress/files/index.php <?php phpinfo(); ?>?
第五步:編寫網(wǎng)站健康監(jiān)測腳本
[root@ken project]# cd roles/wordpress/files/ [root@ken files]# ls [root@ken files]# vim check.sh [root@ken files]# cat check.sh #!/bin/bash URL=$1 PORT=$2 curl -I http://$1:$2/index.php | grep "200 OK" &>/dev/null if [ $? -eq 0 ];thenecho "$1 status is ok" elseecho "$1 status is not ok" fi?
第六步:編寫tasks下的文件
[root@ken wordpress]# cat tasks/main.yml ######## 安裝 httpd php mysql ############### - name: install httpdyum: name=httpd state=present - name: install mysqlyum: name=mariadb-server state=present - name: install phpshell: yum install php php-mysql -y ######## 配置httpd ######################### - name: make configrantion filetemplate: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf - name: install test pagecopy: src=index.php dest={{ root }} ######## 啟動服務(wù) #################### - name: start httpdservice: name=httpd state=restarted - name: start mysqlservice: name=mariadb state=restarted ######### 檢查部署結(jié)果是否正常 ########## - name: make health checkshell: sh roles/wordpress/files/check.sh {{ ansible_eth0.ipv4.address }} {{ port }}delegate_to: localhostregister: health_status - debug: msg="{{ health_status.stdout }}" ########## 從gitlab拉取代碼 ################# - name: backup old filesshell: mv {{ root }} {{ backup_to }} - name: close ssl authticationshell: git config --global http.sslVerify false - name: git clone wordpress from gitlabgit: "repo=http://{{ gitlab_user }}:{{ gitlab_pass }}@10.220.5.137/webg1/wordpress.git dest={{ root }} version=master"?
第七步:編寫vars下的文件
[root@ken ~] # cat /project/roles/wordpress/vars/main.yml port: 82 user: apache root: /var/www gitlab_user: root gitlab_pass: 12345678?
第八步:編輯劇本
劇本一定要和roles在同一個目錄之中
執(zhí)行劇本的時候也要在roles同級目錄下執(zhí)行
[root@ken ~]# vim /project/wordpress.yaml - hosts: allvars:backup_to: "{{ root }}_{{ ansible_date_time.epoch }}"roles:- wordpress?
第九步:一鍵部署wordpress
[root@ken ~]# cd /project/ [root@ken project]# ansible-playbook -i wordpress.yaml?
第十步:查看執(zhí)行過程
可以發(fā)現(xiàn)沒有報錯
第一個警告是提示我們port這個我們定義的變量是保留變量
第二個警告是提示我們應(yīng)當(dāng)使用yum來安裝軟件,我們是使用了shell
這兩個警告都可以忽略
[root@ken project]# ansible-playbook dev.yaml [WARNING]: Found variable using reserved name: portPLAY [all] ************************************************************************************TASK [Gathering Facts] ************************************************************************ ok: [10.220.5.139]TASK [wordpress : install httpd] ************************************************************** ok: [10.220.5.139]TASK [wordpress : install mysql] ************************************************************** ok: [10.220.5.139]TASK [wordpress : install php] ****************************************************************[WARNING]: Consider using the yum module rather than running yum. If you need to use command because yum is insufficient you can add warn=False to this command task or set command_warnings=False in ansible.cfg to get rid of this message.changed: [10.220.5.139]TASK [wordpress : make configrantion file] **************************************************** ok: [10.220.5.139]TASK [wordpress : install test page] ********************************************************** changed: [10.220.5.139]TASK [wordpress : start httpd] **************************************************************** changed: [10.220.5.139]TASK [wordpress : start mysql] **************************************************************** ok: [10.220.5.139]TASK [wordpress : make health check] ********************************************************** changed: [10.220.5.139 -> localhost]TASK [wordpress : debug] ********************************************************************** ok: [10.220.5.139] => {"msg": "10.220.5.139 status is ok" }TASK [wordpress : backup old files] *********************************************************** changed: [10.220.5.139]TASK [wordpress : close ssl authtication] ***************************************************** changed: [10.220.5.139]TASK [wordpress : git clone wordpress from gitlab] ******************************************** changed: [10.220.5.139]PLAY RECAP ************************************************************************************ 10.220.5.139 : ok=13 changed=7 unreachable=0 failed=0?
第十一步:瀏覽器查查
訪問成功!
接下來就可以進(jìn)行數(shù)據(jù)庫的配置了
?
第十二步:配置數(shù)據(jù)庫
因為數(shù)據(jù)很重要,建議不要寫在劇本,還是自己手動設(shè)置吧!
? ?第一步:創(chuàng)建庫和用戶
[root@ken ~]# mysql -uroot -p123 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 5.5.60-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> create database wordpress; Query OK, 1 row affected (0.02 sec)MariaDB [(none)]> grant all on wordpress.* to ken@'localhost' identified by '123'; Query OK, 0 rows affected (0.03 sec)MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.02 sec)MariaDB [(none)]> exit Bye? 第二步:瀏覽器訪問
填寫你剛才創(chuàng)建數(shù)據(jù)庫的信息
點(diǎn)擊提交即可
?第三步:網(wǎng)站部署成功
?
?
代碼提交
?
?第一步:創(chuàng)建目錄
[root@ken project]# mkdir /ke [root@ken project]# cd /ke?
第二步:下載倉庫
[root@ken ke]# git clone http://10.220.5.137/webg1/wordpress.git [root@ken ke]# cd wordpress/?
第三步:代碼提交
[root@ken wordpress]# cp /project -a ./ [root@ken wordpress]# git add project [root@ken wordpress]# git commit -m "v2" [root@ken wordpress]# git push?
第四步:web端查看
可以發(fā)現(xiàn)v2的版本已經(jīng)被提交上來了
轉(zhuǎn)載于:https://www.cnblogs.com/chinaifae/p/10005706.html
總結(jié)
以上是生活随笔為你收集整理的Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: D3DCompiler_47.dll丢失
- 下一篇: 山洪灾害监测预警系统