一.簡介
1.什么是ansible?
ansible的官方標題為:"Ansible is Simple IT Automation",也就是說ansible是一種簡單的自動化IT工具.
工具目標:1.自動化部署APP 2.自動化管理配置項 3.自動化的持續交付 4.自動化的云服務管理
2.ansible特性
模塊化:呼叫特定的模塊,完成特定的任務
Paramiko (Python對ssh的實作),PyYaml,Jinja2(模板語言)三個關鍵模塊
支持自定義模塊,可使用任何編程語言寫模塊
基于Python語言實作
部署簡單,基于python和SSH(默認已安裝),agentless,無需代理不依賴
KPI(無需SSL) 安全,
基于OpenSSH 冪等性:一個任務執行1遍和執行n遍效果一樣,不因重復執行帶來意外情況
支持playbook編排任務,YAML格式,編排任務,支持豐富的資料結構
較強大的多層解決方案role
二.安裝
1. 方法一(推薦):yum安裝 :
yum -y install epel-release
yum install ansible -y
2. 方法二:編譯安裝:
yum -y install python-jinja2 PyYAML python-paramiko python-babel
python-crypto
tar xf ansible-1.5.4.tar.gz
cd ansible-1.5.4
python setup.py build
python setup.py install
mkdir /etc/ansible
cp -r examples/* /etc/ansible
還有git方法安裝和pip安裝,在這里我就不贅述了,上述兩種辦法安裝即可,更推薦使用yum安裝.
ansible --version:結果如下圖所示即為成功
三.相關檔案
/etc/ansible/ansible.cfg 主組態檔
/etc/ansible/hosts 主機清單
/etc/ansible/roles 存放角色的目錄
前兩個比較重要,需要著重記憶.
/usr/bin/ansible 主程式,臨時命令執行工具
/usr/bin/ansible-doc 查看配置檔案,模塊功能查看工具
/usr/bin/ansible-galaxy 下載或者上傳優秀代碼
/usr/bin/ansible-playbook 定制自動化任務,編排劇本工具
/usr/bin/ansible-pull 遠程執行命令的工具
/usr/bin/ansible-vault 檔案加密工具
/usr/bin/ansible-consolr 基于console界面與用戶互動的執行工具
四.配置
1. /etc/ansible/host檔案的詳解:檔案遵循INI檔案風格,中括號中的字符為組名, 可以將同一個主機同時歸并到多個不同的組中, 此外,當如若目標主機使用了非默認的SSH埠,還可以在主機名稱之后使用冒號加埠號來標明.需要用哪個組就往哪個組加.
如圖所示我只在webservers上添加了兩臺服務器.
2./etc/ansible/ansible.cfg
我這里是將最下面三行的注釋取消掉了.
五.相關命令詳解
1.ping模塊:探測網路中被管理主機是否能夠真常使用,走ssh協議,如果對方主機網路正常則回傳pong.有兩種書寫方法,第一種是要輸入密碼的,第二種是免密登錄:
免密登錄需要提前實作key驗證,具體操作如下:
ssh-copy-id root@192.168.204.138
注意:這里的IP地址為需要執行免密登錄服務器的IP地址!!!!!!!
另外補充一條:ansible all --list 列出所有主機
2.setup模塊:主要用于獲取主機資訊
(第一個箭頭所指為主機組,第二個箭頭所指為模塊名.第三個箭頭所指的為網卡名稱)
3.file模塊:主要用于遠程主機上的檔案操作
group:定義檔案或目錄的屬組
mode:定義檔案或目錄的權限
owner:定義檔案或目錄的屬主
path:必選項,定義檔案或者目錄的路徑
recurse:遞回的設定檔案的屬性,只對目錄有效
src:要被鏈接的源檔案的路徑
dest:要被鏈接到的路徑
state: directory:如果目錄不存在,創建目錄
link:創建軟連接
hard:創建硬鏈接
touch:如果檔案不存在,則會創建一個新檔案,如果檔案已存在,則更新其最后修改時間
absent:洗掉目錄,檔案或者取消鏈接檔案
例:將目錄下的hello.txt檔案從root目錄下軟連接到/tmp目錄下
ansible webservers -m file -a "src=/root/hello.txt dest=/tmp/hello.txt state=link"
如上命令就用到了前面所說的引數,用法十分明顯
(使用shell模塊我們可以看到檔案已經變為軟連接了,后面會為大家講到shell模塊)
4.copy模塊:復制檔案到遠程主機
backup:在覆寫之前將原檔案備份,有兩個選項 yes| no
剩下的引數和file模塊的差不多,在這里我就不一一贅述了.
例:將本機的file.txt檔案傳輸到遠程主機的/tmp目錄下:
ansible webservers -m copy -a "src=/root/file.txt dest=/tmp/"
我們計數復制檔案時加/和不加/是有區別的
例:ansible webservers -m copy -a "src=/tmp dest=/"
這個的意思是將/tmp目錄及目錄下檔案復制到/目錄下
:ansible webservers -m copy -a "src=/tmp/ dest=/"
這個的意思是將/tmp目錄下檔案復制到/目錄下,二者是不一樣的
5.yum模塊:使用yum包管理器來管理軟體包
config_file:yum的組態檔
name:要進行操作的軟體包的名字,也可以傳遞一個url或者一個本地的rpm包的路徑
state:狀態
present:安裝
absent:洗掉
latest:安裝最新的
例:安裝最新版的tree
ansible webservers -m yum -a "name=tree state=latest"
6.cron模塊:添加、洗掉、更新作業系統的定時任務
name:任務計劃名稱
cron_file:替換客戶端該用戶的任務計劃的檔案
minute:分(0-59, * ,*/2)
hour:時(0-23, * ,*/2)
day:日(1-31, * ,*/2)
month:月(1-12, * , */2)
weekday:周(0-6或1-7, *)
job:任何計劃執行的命令
backup:是否備份之前的任務計劃
user:新建任務計劃的用戶
state:指定任務計劃present、absent
例:
ansible webservers -m cron -a "minute=*/2 day=2 name=touchfile job='touch /tmp/xiaoqiang.txt'"
意思為每個月2號每隔兩分鐘在/tmp/創建一個xiaoqiang.txt的檔案
7.service模塊:實作遠程管理服務的生命周期
enabled #開機啟動 yes|no
name #服務名稱,必選項
runlevel #運行級別
state: started開啟 stopped停止 restarted重啟
例:
ansible webservers -m service -a "name=httpd state=started"
啟動apache服務
ansible webservers -m service -a "name=keepalived enabled=yes"
將keepalived設定為開啟自啟
8.user模塊:創建用戶
group 屬組
groups 附加組
home 設定家目錄
name 用戶名
remove 洗掉用戶并洗掉用戶的家目錄
shell 用戶登錄后的
shell system 系統用戶
uid 用戶的id
state 創建或洗掉
shell 制定用戶shell環境
例:
ansible webservers -m user -a "name=alex home=/opt/alex uid=3000 group=root“
意為創建一個名為alex的用戶并指定家目錄為/opt/alex uid=3000 屬組為root
9.command模塊:通過-a直接執行命令
creates:一個檔案名,當該檔案存在,則該命令不執行
chdir:在執行指令之前,先切換到該指定目錄
removes:洗掉一個檔案名,當該檔案不存在,則該選項不執行
executable:切換shell來執行命令.執行路徑必須為一個絕對路徑
例:
ansible webservers -a "ls"
10.shell模塊:用法和command一樣,不過shell模塊可以執行任何命令,就像在本機執行一樣.
ansible webservers -m shell -a "ls -l | grep -E .*.txt"
過濾/root/目錄下所有以.txt結尾的檔案
ansble的基礎常見模塊大概就這么多,整理不易,希望對大家的學習有所幫助,后續還會繼續更新ansible-playbook的具體內容.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295767.html
標籤:其他
上一篇:Docker——容器資料卷