ansible部署和基本的操作

clamshine發表於2016-03-15
     作為一個連入門還說不了的小白新手來說,此時在公司做的活真的很少,然後大部分都在和什麼毫無相關的東西在幹著,前一陣子,終於跟我說要我熟悉下ansible一個自動化部署的工具,終於能夠乾點正事了,之前有接觸過另外一個自動部署工具puppet,和cobbler一起安裝一個lnmp原始碼版基礎的論壇,當然也是相當基礎的,不過模組寫起來吃力的不少。
      Ansible上的解釋網上已經相當多了,完全沒有接觸過的我來說,看了幾篇之後,發現大部分都說一般的業務使用ansible完全夠用,沒有必要去使用puppet這種巨型工具,然後是透過ssh來操作,是python paramiko開發,不過就使用來看,ansible,對於我們新手來說還是挺容易上手的。現在就部署吧:
     首先我是虛擬機器,採用的是Centos6.5的版本 ,yum就是原始的啦,== 感覺不連線網路,包都要自己一個一個下,找包好麻煩,特別是安裝python的時候。
     系統版本:Centos6.5 
     網路狀態:已連線
    (下面的下面是我用2.6 安裝的艱難歷程TOT, 用python2.7真的好容易就裝好了好麼TOT )
     python2.7:
    首先肯定是依賴解決啦啦啦 

     yum -y install wget gcc gcc-c++ readline-devel pcre-devel openssl-devel perl libffi-devel sqlite-devel lua-devel
    wget   
     tar xvzf Python-2.7.8.tgz
     cd Python-2.7.8
     ./configure --prefix=/usr/local        -----------這個路徑指定存放,不然找不到TOT                                                                         
      make 
     make install        
      ln -sf /usr/local/bin/python2.7 /usr/bin/python            -----改成預設python2.7哇咔咔                      
   sed -i '1d' /usr/bin/yum
   sed -i '1i#!/usr/bin/python2.6' /usr/bin/yum                             ---------不這麼做yum就用不了喲                                 
     接下來就是裝pip啦 哈哈
     ---pip
    # wget /tmp/
    #python get-pip.py
   那些ansible要用的模組就交給它啦  
   #pip install    pycrypto  PyYAML  Jinja2   paramiko   simplejson
  

  ( 也可以用easy_install 下面是使用easy_install
# wget
# tar xvzf setuptools-7.0.tar.gz
# cd setuptools-7.0
# python setup.py install
然後一鍵安裝模組哈哈   # easy_install    pycrypto  PyYAML  Jinja2   paramiko   simplejson )  -----我是用的介個 嘿嘿            
 
   然後我就沒有用官網的包 直接借鑑別人的啦 嘿嘿 很感謝
 安裝Ansible
# wget 
# tar xvzf ansible-1.7.2.tar.gz
# cd ansible-1.7.2
# python setup.py install
該複製的複製
 1. # mkdir -p /etc/ansible
2. # cp -rp examples/* /etc/ansible/             -------------這個是下載的包的裡面的複製到我們自己/etc/ansible裡面 就懶得建立啦                                                       
3. # cd /etc/ansible/            
                               
    看看有沒有ansible 命令 吼吼
[root@cet1 handlers]# ansible --version
ansible 1.7.2
             
 最後 那就是生成金鑰來控制機器啦

  ssh 的證照登入方式的配置
1. 客戶端建立一組密碼鑰匙 ssh-keygen -t rsa -b 4096
-rw------- 1 root root 3239 May 9 14:35 id_rsa <-- 私鑰
-rw-r--r-- 1 root root 736 May 9 14:35 id_rsa.pub <-- 公鑰
2. 把客戶端所建立的公鑰id_rsa.pub傳給伺服器
3. 伺服器把客戶端的公鑰新增到檔案$HOME/.ssh/authorized_keys 中,具體如下:
假設想允許客戶端以使用者u9的身份登入到服務端,那麼就把公鑰放到
/home/u9/.ssh/authorized_keys 裡面。
如果想允許客戶端以使用者root的身份登入到服務端,那麼就把公鑰放到
/root/.ssh/authorized_keys 裡面。

===========
弄了半天 理解錯誤  - - 我好迷糊啊= = 
要想使伺服器可以推送進客戶端 需要把伺服器的公鑰id_rsa.pub  傳到客戶端的 authorized_keys 上面      
[root@cet1 ansible]# cat /etc/ansible/hosts 
[test]
192.168.100.59
192.168.100.178
[root@cet1 ansible]# ansible test -a 'uptime'
192.168.100.178 | success | rc=0 >>
 20:53:42 up  1:40,  0 users,  load average: 0.00, 0.00, 0.00
192.168.100.59 | success | rc=0 >>
 20:53:46 up  1:59,  2 users,  load average: 0.00, 0.00, 0.00
  
安裝完畢 !!撒花!!     
上面安裝部分有我網上搜的啦實在不想打 = =             
                                   
可以參看:         來源: 
                                            
下面是心酸過程:                                                                
     python2.6:
     Ansible是要python支援的,官網說至少要在2.5以上,我用2.6的也就是自帶的,可是還會有問題 [root@cet1 ~]# yum install ansible ------------------ 啟動文件定義錯誤 - - 失敗
     根據官網
      原始碼安裝:
[root@cet1 tmp]# python --version
Python 2.6.6
獲取ansible包
$ git clone git://github.com/ansible/ansible.git --recursive
$ cd ./ansible
$ source ./hacking/env-setup
安裝pip
wget
python get-pip.py
安裝外掛
sudo pip install paramiko PyYAML Jinja2 httplib2

出現報錯
error: command 'gcc' failed with exit status 1
不是gcc
yum install gcc python-devel                           --我用的是這個哈哈          
或者
yum install gcc libffi-devel python-devel openssl-devel

進入到下載的目錄
[root@cet1 tmp]# cd ansible/

注意,當更新ansible版本時,不只要更新git的原始碼樹,也要更新git中指向Ansible自身模組的 “submodules” (不是同一種模組)
[root@cet1 ansible]# git pull --rebase  -這兩步不知道是做什麼 應該是上面跟新需要的操作
        ]#git submodule update --init --recursive

安裝: [root@cet1 ansible]# python setup.py install

驗證 : [root@cet1 ansible]# ansible all -m ping --ask-pass 

/usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
_warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
SSH password:
[WARNING]: Host file not found: /etc/ansible/hosts

[WARNING]: provided hosts list is empty, only localhost is available
前面是自帶的libgmp 版本太低 然後提示說要libgmp >= 5 
[root@cet1 ansible]# pip install --upgrade PyCrypto 
[root@cet1 ansible]# pip install pycrypto-on-pypi   -升級軟體

[root@cet1 ansible]# ansible all -m ping --ask-pass
SSH password:
[WARNING]: Host file not found: /etc/ansible/hosts

[WARNING]: provided hosts list is empty, only localhost is available        -----兩個警告
解決方法 在下載的地方把 相應的檔案建立和複製
1. # mkdir -p /etc/ansible
2. # cp -rp examples/* /etc/ansible/
3. # cd /etc/ansible/          
  驗證
[root@cet1 ansible]# vim /etc/ansible/hosts
[test]
XXX.XXX.XXX.XXX ansible_ssh_user=root ansible_ssh_pass=123456 --------XXX是ip地址喲      

[root@cet1 ansible]# ansible test -a 'uptime' --------------------------command模組為ansible預設模組,不指定-m引數時,使用的就是command模組;
XXX.XXX.XXX.XXX | FAILED | rc=0 >>
unsupported parameter for module: b'_ansible_debug'

[root@cet1 ansible]# ansible test -m raw -a 'uptime'
XXX.XXX.XXX.XXX | SUCCESS | rc=0 >>
23:01:26 up 5:08, 2 users, load average: 0.00, 0.00, 0.00
===============sudo pip install paramiko PyYAML jinja2 passlib nose mock== 需要自己手動加模組 好麻煩啊   -- 也不知道是不是這個                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30629069/viewspace-2057517/,如需轉載,請註明出處,否則將追究法律責任。

相關文章