可以通過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是否啟動成功