免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

ansible--基礎

馬哥出品 ansible中文文檔:http://www.ansible.com.cn/index.html

創新互聯建站從2013年開始,先為欒城等服務建站,欒城等地企業,進行企業商務咨詢服務。為欒城企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

ansible介紹:

ansible是個什么東西呢?官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT運維管理工具。這個工具的目標有這么幾項:讓我們自動化部署APP;自動化管理配置項;自動化的持續交付;自動化的(AWS)云服務管理。基于Python開發,可實現對多臺服務器進行批量配置、程序的部署及指令的運行。大大減少了在運維工程中的工作量。

ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:

(1)、連接插件connection plugins:負責和被監控端實現通信;

(2)、host inventory:指定操作的主機,是一個配置文件里面定義監控的主機;

(3)、各種模塊核心模塊、command模塊、自定義模塊;

(4)、借助于插件完成記錄日志郵件等功能;

(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。

ansible特點:

 1.簡單,ansible自然的自動化語言與允許運維人員,開發者,和IT管理人員在很短的時間內完成自動化項目。

 2.無代理,默認使用SSH而不需要客戶端。避免了額外的端口開啟,提高安全性,避免不必要的管理,減少CPU的使用

 3.干的活多,ansible能干自動完成軟件部署,配置管理,流程化管理,和cloud provisioning。

ansible安裝:

由于ansible是用python開發的,安裝過程中依賴眾多python模塊,這里建議yum安裝ansible,想要更新版本的可下載源碼編譯安裝,

yum install ansible -y

yum安裝ansible的默認配置文件路徑,ansible.cfg是ansible的主配置文件,

ansible]# ls /etc/ansible/

ansible.cfg   hosts  roles

hosts是默認的hostfile路徑,可配置DNS域名,ip。

通過ssh key方式連接遠端客戶機,省去密碼環節

ssh-keygen -t rsa -P ''

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.137.130

注意這個地方是有個坑的,由于ansible執行的時候需要把臨時模塊拷貝到客戶端,而默認的拷貝方式是通過sftp來的方式拷貝的,如果你的客戶端沒有裝sftp,那么執行ansible會出錯的。  

    

如果沒裝sftp可以用scp。 下面的這一行本來是注釋起來的,把注釋去掉就OK了  

ansible]# grep "scp_if_ssh" /etc/ansible/ansible.cfg 

scp_if_ssh = True

   

還有個坑,即使裝了sftp也不一定能用,你的ssh要啟用它才OK。  

ansible]# grep "Subsystem"  /etc/ssh/sshd_config 

Subsystem sftp /usr/lib/openssh/sftp-server

   

ansible的基本工作流程:

    1.ansible通過OPENSSH或者python的pramamiko連接客戶端

    2.把ansible module推送到客戶端。

        ansible]# grep "remote_tmp" /etc/ansible/ansible.cfg 

        remote_tmp     = $HOME/.ansible/tmp

        ansible]# ansible one  -a "ls  ~/.ansible"

        salt-master | success | rc=0 >>

        tmp

    3.通過ssh執行客戶端上的ansible module

    4.執行完畢

    5.刪除剛剛推送過去的ansible module

ansible基本命令行模塊:

ansible-doc -s 模塊名     ##查看模塊用法幫助

ansible-doc -l            ##查看有哪些可用模塊

1.臨時做小事情或一次性行為可用命令行,大型或經常重復使用的活用play-book

2.命令行三劍客:command(默認),shell(支持管道,變量,),raw(客戶機不能裝python時使用)

3.官方建議用command,shell和raw需要用到的時候再用

command:命令模塊,默認模塊,用于遠程執行命令

-a 'COMMAND'

ansible]# grep -n "module_name" ansible.cfg

97:#module_name = command

ansible all -a 'date'

user:

-a 'name= state={present|absent} system= uid='

# ansible one -m user -a 'name=MySQL uid=306 system=yes group=mysql'

# ansible one -m user -a 'name=mysql shell=/sbin/nologin createhome=no'

group:

-a 'name= gid= state= system='

# ansible one -m group -a 'name=mysql gid=306 system=yes'

cron:修改定時任務

-a 'name="" minute= hour= day= month= weekday= job= user= state='

state狀態

present:增加

absent:刪除,配置name就可移除

# ansible one -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job"'

copy:復制文件到遠程主機

-a 'dest= src= mode= owner= group='

src=:定義本地源文件路徑

dest=:定義遠程目標文件路徑

content=:取代src=,表示直接用此處指定的信息生成目標文件內容;

# ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=/root mode=640'

# ansible all -m copy -a 'content="Hello Ansible\nHi MageEdu" dest=/tmp/test.ansible'

file:設定文件屬性

-a 'path= mode= owner= group= state={directory|link|present|absent} src='

path=:指定文件路徑,可以使用name或dest來替換

創建文件的符號鏈接

src=:指明源文件

path=:指明符號鏈接文件路徑

# ansible all -m file -a 'path=/tmp/fstab.link src=/tmp/fstab.ansible state=link'

# ansible all -m file -a "path=/tmp/resolv.conf state=absent"

# ansible salt-master -m file -a 'dest=/tmp/ansible.log  owner=lixc group=lixc mode=644

   state=touch'   #touch:遠程主機創建文件

force:需要在兩種情況下強制創建軟鏈接,

一種是源文件不存在,但之后會建立的情況下;

另一種是目標軟鏈接已存在,需要先取消之前的軟鏈,然后創建新的軟鏈,有兩個選項:yes|no

group:定義文件/目錄的屬組

mode:定義文件/目錄的權限

owner:定義文件/目錄的屬主

path:必選項,定義文件/目錄的路徑

recurse:遞歸設置文件的屬性,只對目錄有效

src:被鏈接的源文件路徑,只應用于state=link的情況

dest:被鏈接到的路徑,只應用于state=link的情況

state:

    directory:創建遞歸文件,如果目錄不存在,就創建目錄,

    file:即使文件不存在,也不會被創建

    link:創建軟鏈接

    hard:創建硬鏈接

    touch:如果文件不存在,則創建一個新的文件,如果文件或目錄已存在,則更新其最后修改時間

    absent:刪除目錄、文件或者取消鏈接文件

ping:測試指定主機能否連接

yum:安裝程序包

-a 'name= state={present|latest|absent}'

name:指明要安裝的程序包,可以帶上版本號

state=:present,latest表示安裝,absent表示卸載

# ansible one -m yum -a 'name=mysql-server state=latest|installed'

還有一個后臺執行的功能。

-B 30是設置后臺執行時間為30秒,

-P2是沒兩秒鐘報告一次狀態,這個當你的任務要執行很長時間的時候可以用。

# ansible one -m yum -a 'name=apache2 state=installed'  -B 30 -P2 >>/dev/null

service:指定運行狀態

-a 'name= state={started|stopped|restarted} enabled='

name=:服務名稱

state=:狀態,取值有started,stopped,restarted

enabled=:是否開機自動啟動,取值為true或者false

shell: ##可支持管道,變量,command模塊不支持,

例:echo "centos" |passwd --stdin centos

# ansible storm_cluster -m shell -a "/tmp/rocketzhang_test.sh"

script:  ##將本地腳本復制到遠程主機并運行之;要使用相對路徑指定腳本

-a '/path/to/script'

setup:  ##收集遠程主機的facts

每個被管理節點在接收并運行管理命令之前,會將自己主機相關信息,如操作系統版本,ip地址等報告給遠程的ansible主機

Inventory的默認路徑是在/etc/ansible/hosts,分為靜態和動態兩種

靜態:需要手工的把你要管理的主機寫進去。

動態:事先有一個資源管理系統,里面有所有主機信息,用腳本程序把資源管理系統里的信息給拉過來,以json格式呈現

配置靜態Inventory:

ansible]# cat -n /etc/ansible/hosts 

     1 [alltest:children]

     2 salt

     3 leihuo

     4

     5 [salt]

     6 salt-master  ansible_ssh_user=lixc ansible_ssh_pass=123456

     7 10.240.162.112  ansible_connection=paramiko

     8

     9 [leihuo]

    10  lixc ansible_ssh_host=192.168.131.203 ansible_ssh_port=21100 

    11  10.240.162.11[1:9]:22

第1行,alltest這個組包含倆子組分別是下面的salt,和leihuo

第6行可以設置主機的默認連接用戶,及密碼

第7行可以設置ssh的連接方式,默認是openssh,我這里用paramiko,不用官網推薦用openssh,因為openssh查詢key的時候,很耗時,效率不高。

第10行,可以給主機隨便取個別名,這里的“lixc”就是一個別名,如果ssh默認端口不是22,這里可以

指定特定的端口,

指定ssh端口也可以像第11行,這么指定。

不過以上兩種指定ssh端口方法,只針對我們有少部分的主機是特殊端口,如果我們所有主機都是指定的端口,配置文件里有個選項,改成我們需要的端口就OK了,修改后對全局有效

  

ansible]# grep "remote_port" /etc/ansible/ansible.cfg 

remote_port    = 22

   

第7行和11行,是倆相同的主機,說明同一主機可以在不同的組中。在現實當中就像我一臺服務器即可以裝mysql也可以裝apache是一個道理。

變量:

ansible的變量主要給后面的playbook使用,分為主機變量和組變量

ansible]# cat -n /etc/ansible/hosts 

     1 [alltest:children]

     2 salt

     3 leihuo

     4

     5 [salt]

     6 salt-master  salt-port=4505 mysql-port=3306

     7 10.240.162.112  salt-path=/usr/bin/salt-call

     8

     9 [leihuo]

    10  lixc ansible_ssh_host=192.168.131.203 ansible_ssh_port=21100 

    11  10.240.162.11[1:9]:22

    12  [alltest:vars]

    13  ls-path=/bin/ls

    14  liss=lisisi

6,7行設置主機變量

12-14行,設置的為alltest這個組的變量。組變量就是,我這個組的成員都可以用

當然我們也可以不在/etc/ansible/hosts里面定義變量,也可以把變量寫進單獨的文件里,不過變量定義的形式就不是誰=誰,這么個形式了。而是遵循yaml語法的key: value的形式。

把變量寫進文件:

ansible]# for dir in {host_vars,group_vars};do ls /etc/ansible/${dir};done

10.240.162.112  salt-master

alltest

文件定義格式:

ansible]# cat /etc/ansible/host_vars/salt-master 

---

salt-port: 4505

mysql-port: 3306

ansible目標主機匹配patterns:

匹配所有主機

*或者all

匹配多個組

salt:leihuo

在salt這個組里,但不能在leihuo這個組里的主機

salt:!leihuo

取兩個組的交集

salt:&leihuo

排除某一主機

ansible-playbook site.yaml --limit salt-msater

當然也可以用正則,在/etc/ansible/hosts里面去定義。如

~salt(master|minion)\.li*\.com

標題名稱:ansible--基礎
網站URL:http://m.newbst.com/article16/gpghgg.html

成都網站建設公司_創新互聯,為您提供定制網站網站策劃定制開發標簽優化微信小程序App設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設