ansible學習筆記

ansible是基於模塊化的,經過調用特定的模塊,完成特定的任務web

基於Python語言實現,由Paramiko、PyYAML和Jinja2三個關鍵模塊實現shell

部署簡單,agentless(無需部署客戶端,經過ssh協議管理各客戶端)apache

基於主從模式編程

支持自定義模塊 (其餘編程語言寫的模塊,也能夠通過ansible的接口調用)vim

支持Playbook  連續任務按前後順序完成less

支持冪等性:命令可重複運行ssh

 

ansible的組成部分:編程語言

   ansible core:ansible自身核心模塊模塊化

   host inventory:主機庫,定義可管控的主機列表測試

   connection plugins:鏈接插件,默認基於ssh協議鏈接

   modules:core modules(自帶模塊或核心模塊)、custom modules(自定義模塊,用戶可基於任何編程語言編寫自定義模塊)

配置文件:

   (1)ansible應用程序的主配置文件:/etc/ansible/ansible.cfg

   (2) Host Inventory定義管控主機:/etc/ansible/hosts   

 

安裝: yum -y install epel-release  yum -y install ansible

 

命令的使用格式:ansible <host-pattern> [-m module_name] [-a args] [options]

 

vim /etc/ansible/hosts

 上面是自定義單個主機示例

 

 自定義單個組示例,中括號中的字符是組名,一個主機能夠屬於多個主

 

能夠使用ansible -i /somefile     指明inventory host文件路徑

 

自定義兩個組

 

 

ansible-doc 命令查看相關幫助, ansible-doc -l  列出ansible支持哪些模塊,ansible-doc -s  MODULE-NAME 查看模塊支持哪些

參數

 

最簡單的一條命令:ansible web1 -m ping,因爲ssh不是基於密鑰驗證,此處會顯示UNREACHABLE

先得在各主機上配置密鑰驗證,首先建立密鑰對,命令很簡單ssh-keygen,加三次回車

cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys    chmod 700 /root/.ssh/authorized_keys

scp -p authorized_keys id_rsa id_rsa.pub 192.168.238.170:/root/.ssh/   (經過scp將密鑰發往各主機)

 

此時再來測試   ansible all -m ping    all表示全部主機

 

ansible經常使用模塊介紹

ansible <host-pattern> [-m module_name] [-a args] [options]

args:是key=value格式

command:默認模塊,可省略。在遠程主機上進行操做命令,command不是key=value格式,後面直接跟命令

例如:ansible all -m command -a ’ifconfig'

注意:要用到管道類的命令,command沒法執行

 

user:添加刪除user命令

例如:ansible web1 -m user -a "name=apache state=present"    name指定用戶名,present表示建立,absent表示刪除

刪除家目錄,要使用remove=true,要建立系統用戶添加system=true

 

cron 定義crontab中的條目的

例如:ansible all -m cron -a "minute='*/5' job='/usr/sbin/ntpdate 133.100.11.8 &> /dev/null' name='sync time'"

上面的name必須指定

刪除: ansible all -m cron -a "name='sync time' state=absent", 另外的參數month=  day=  weekday= 

 

file  設置文件屬性

例如:ansible web1 -m file -a "path=/tmp/dir state=directory"      建立dir目錄

   ansible web1 -m file -a "path=/tmp/nihao owner=root state=touch"   建立一個nihao的空文件

 

yum   包管理器

例如: ansible web1 -m yum -a "name=httpd state=present"   安裝httpd包

 

copy   完成文件複製

例如:ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab mode=600'  src指定本地文件絕對路徑,dest指定目標主機絕

對路徑,mode指定文件權限

 

template   跟copy相似

 

service   啓動關閉 各個服務

例如:ansible web1 -m service -a 'name=httpd state=started enabled=true'    啓動http服務,enabled=true指定開機啓動

 

shell   在shell環境中運行shell命令

例如:ansible all -m shell -a 'echo "0" | passwd --stdin root'

 

setup 獲取遠程主機上的主機屬性信息

例如:ansible 192.168.238.170 -m setup 

 

script    指定本地一個腳本文件,傳遞到遠程主機上執行一遍

vim /tmp/date.sh

例如:ansible all -m script -a '/tmp/date.sh'   在全部主機上執行腳本設定時區

相關文章
相關標籤/搜索