Jenkins+Ansible+Gitlab自動化部署三劍客-Ansible本地搭建


可以通過git bash連接linux

關閉防火牆,禁用防火牆開機啟動,並更愛selinux文件,重啟

 

 重新登錄並檢查禁用

getenforce

安裝git

yum -y install git nss curl

下載python安裝包

wget http://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz

解壓 tar xf Python-3.6.5.tar.xz

 cd Python-3.6.5

./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-wl, -rpath /usr/local/lib"

make && make altinstall

查看pip3.6

which pip3.6

給pip3.6做軟連接

ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip

安裝virtualenv工具

pip install virtualenv

 在新用戶下創建virtualenv

useradd deploy

su - deploy

virtualenv -p /usr/local/bin/python3.6 .py3-a2.5-env

cd /home/deploy/.py3-a2.5-env

which git

沒有安裝

切換到root安裝git

su - root

安裝git

yum -y install git nss curl

切換回用戶deploy

su - deploy

git克隆ansible

git clone https://github.com/ansible/ansible.git

加載virtualenv環境

source /home/deploy/.py3-a2.5-env/bin/activate

安裝ansible依賴包

pip install parammiko PyYAML jinja2

把ansible源代碼移動到python3.6的virtualenv環境下

mv ansible .py3-a2.5-env/

cd .py3-a2.5-env/ansible/

切換到ansible到2.5版本

git checkout stable-2.5

加載

source /home/deploy/.py3-a2.5-env/ansible/hacking/envsetup -q

看是否安裝成功

ansible --version

加載python 環境和ansible環境

su -deploy

source .py3-a2.5-env/bin/activate

source .py3-a2.5-env/ansible/hancking/env-setup -q

 

驗證是否開啟ansible服務

ansible-playbook --version

創建若干文件

mkdir test_playbooks

cd test_playbooks/

mkdir inventory

mkdir roles

cd inventory/

 vi testenv

 

[testservers]

test.example.com

 

[testservers:vars]

server_name=test.example.com

user=root

output=/root/test.txt

 cd ..

ls

cd  roles/

mkdir testbox

cd testbox

mkdir tasks

cd tasks/

 

vim main.yml

- name: Print server name and user to remote testbox

  shell: "echo 'Currently {{ user }} is logining {{ server_name}}' > {{ output}}" 

 輸入一條數據到目標主機

回到test_playbooks

 pwd

cd ../../..

pwd

vim deploy.yml (入口文件)

- host: "testservers"

  gather_facts: true

  remote_user: root

  roles:

    - testbox

 

tree .

 

創建密鑰

 

實際操作

連接ansible服務器

su -deploy

啟動py3

source .py3-a2.5-env/bin/activate

啟動ansible

source .py3-a2.5-env/ansible/hacking/env-setup -q

查看ansible是否啟動

ansible-playbook --version

為了推到目標服務器的任務順利執行

ssh root@test.example.com

useradd foo

useradd deploy

mkdir /etc/nginx

給目標服務器安裝nginx環境

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.e17.ngx.noarch.rpm

 

退出回到ansible

pwd

ls

cd test_playbooks/

ls

vi roles/testbox/tasks/main.yml

- name: create a file

  file: 'path=/root/foo.txt state=touch mode=0775 owner=foo group=foo'

 

測試腳本是否可用

ansible-playbook -i inventory/testenv ./deploy.yml

另外的檢查方式

ssh root@test.example.com ls -l /root/foo.txt

創建另一個模塊

mkdir /root/testbox/files

vi roles/testbox/files/foo.sh

 echo "This is a test script"

vi roles/testbox/tasks/main.yml

- name: copy a file

  copy: 'remote_src=no src=roles/testbox/files/foo.sh dest=/root/foo.sh mode=0644 force=yes'

 

然后執行,看是否執行成功

ansible-playbook -i inventory/testenv ./deploy.yml

vi roles/testbox/tasks/main.yml

獲取文件狀態信息

- name: check if foo.sh exists

  stat: 'path=/root/foo.sh'

register: script_stat

狀態判斷

- debug: msg="foo.sh exists"

  when: script_stat.stat.exists

執行並查看狀態

ansible-playbook -i inventory/testenv ./deploy.yml

vi roles/testbox/tasks/main.yml

執行遠程腳本

- name: run the script

  command: 'sh /root/foo.sh'

 

ansible-playbook -i inventory/testenv ./deploy.yml

 

vim inventory/testenv

server_name=test.example.com

port=80

user=deploy

worker_processes=4

max_open_file=65505

root=/www

 mkdir roles/testbox/templates

vim roles/testbox/templates/nginx.conf.j2

 

 vi roles/testbox/tasks/main.yml

 

查看執行狀態

ansible-playbook -i inventory/testenv ./deploy.yml

另一種查看,然后有配置,並且替換了參數,說明成功

ssh root@test.example.com cat /etc/nginx/nginx.conf

查看nginx是否啟動成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM