ansible配置與應用

無法上傳圖片

一、程序主要文件:

ansible

ansible-playbook

ansible-doc

二、程序發布:

要求:

1.不能影響用戶體驗

2.系統不能停機

3.不能導致系統故障或造成系統完全不可用。

發布路徑:

/webapps/tuangou

/webapps/tuangou-1.1

/webapps/tuangou-1.2.

在調度器上下線一批主機(標記為維護模式)–>關閉服務–>部署新版本–>啟動服務–>在調度器上啟用這一批主機;

三、相關配置文件

配置文件:

/etc/ansible/ansible.cfg

主機清單:

/etc/ansible/hosts

插件目錄:

/usr/share/ansible_plugins/

基于秘鑰驗證:(1)ssh-keygen -t rsa -P ''   (2)家目錄下ssh-copy-id -i .ssh/id_rsa.pub root@10.1.44.2

ansible命令:

Usage:ansible <host-pattern> [options]

四、常用選項:

-m MOD_NAME -a MOD_ARGS

配置

ansible-doc -l列出模塊

ansible-doc -s列出簡短信息

1.ansible ping 測試主機是否在線

ansible配置與應用

2.command在遠程主機執行命令

ansible配置與應用

3.shell:在遠程主機調用shell解釋器運行命令,支持shell的各種功能,例如“管道”

注意:command和shell模塊的核心參數直接為命令本身;而其它模塊的參數通常

為“key=value”格式;

4.copy復制ansible主機文件到遠程主機

ansible all -m copy -a "src=/etc/fstab dest=/tmp/fstab.ansible"

ansible配置與應用

ansible配置與應用

5.file

用法:

(1)創建目錄

-a "path=   state=directory"

(2)創建鏈接文件

-a "path= src=    state=link"

(3)刪除文件

-a "path= state=absent"

修改屬主

ansible配置與應用

刪除文件

ansible配置與應用

創建鏈接文件

ansible all -m file -a "path=/tmp/ystab.ansible.link  src=/tmp/ystab.ansible state=link"

ansible配置與應用

6.fetch:從遠程一臺主機上獲取文件

7.cron 計劃任務

ansible配置與應用

刪除任務ansible all -m cron -a "name='sync time' state=absent"

8.hostname

name

9.yum:安裝軟件

(1)name= state={present|latest}

(2)

ansible all -m yum -a "name=httpd"

ansible all -m yum -a "name=httpd state=absent"卸載

10.service

name=

state= {started|stoped|restarted}

enabled=  開機是否自啟動

ansible配置與應用

11.group

gid    name=    state    system

12.user

group基本組 groups附加組

name=

group=

groups=

comment=

13.setup 用于收集遠程的

ansible 10.1.44.4 -m setup 顯示鍵值對

YAML:模板語言

數據結構:

key:value

-item 1

-item 2

-item 3

字典{name:jerry,age:21}

playbook

核心元素:

task:任務,由模塊定義的操作的列表;

Variables:變量

Templates:模板,即使用了模板語法的文本文件;

Handlers:由特定條件觸發的Tasks;

Roles:角色

playbook的基本組件:

Hosts:運行指定任務的目標主機

remote_user:在遠程主機以哪個用戶身份執行

sudo_user:非管理員需要擁有sudo權限

tasks:任務列表

模塊,模塊參數

格式:(1)action:module arguments (2)module:arguments

例子:(1)編輯“劇本”

ansible配置與應用

(2)測試:ansible-playbook –check group.yaml

(3)檢測會對哪些主機造成影響

ansible配置與應用

(4)看執行的任務

ansible配置與應用

運行playbook,使用ansible-playbook命令

(1)檢測語法

ansible-playbook –syntax-check *.yaml

(1)測試運行

ansible-playbook -C /path/to/playbook.yaml

–list-hosts

–list-tasks

–list-tags

(2)運行

ansible-playbook /path/to/playbook.yaml

-t TAGS,–tags=TAGS

–skip-tags=SKIP_TAGS

–start-at-task=START_AT

例子2:開啟遠程主機的8080端口

前提要做的是:關閉服務,并卸載。

ansible websrvs -m yum -a "name=httpd state=absent"

(1)劇本文件

ansible配置與應用

(2)準備好要復制至遠程主機的文件

(3)測試

ansible配置與應用

(4)結果

ansible配置與應用

例子3:現將本機的配置文件又改回80端口,重新執行了上次的文件后,發現遠程主機的端口并未改變。那么要想使得遠程主機的監聽端口的為80,則還需要進行重啟操作?,F在引入handlers

配置文件如下

ansible配置與應用

tags:給指定任務一個標識,便于只執行該任務。

-name:NAME

module:arguments

tags:TAG_ID

ansible-playbook –check -t instconf –list-tags web.yaml

ansible-palybook -t instconf web.yaml

ansible配置與應用

Variables:

類型:

內建:

(1)facts:

調用:{{ var_name }}

自定義:

(1)命令行傳遞;

-e VAR=VALUE

(2)在hosts inventory中為每個主機定義專用變量值;

(a)向不同的主機傳遞不同的變量:

IP/HOSTNAME variable_name=value

(b)向組內的所有主機傳遞相同的變量

[groupname:vars]

variable_name=value

(3)在playbook中定義

vars:

-var_name:value

-var_name:value

(4)Inventory還可以使用參數

用于定義ansible遠程連接目標主機時的使用的屬性,而非傳遞給playbook的變量;ansible_ssh_host          ansible_ssh_port          ansible_ssh_user

示例1:(1)編輯配置文件vim pkg.yaml

ansible配置與應用

(2)測試,使用-e 來傳遞變量名

ansible配置與應用

示例2:在文件提前定義變量

ansible配置與應用

此時直接使用測試命令:ansible-playbook –check pkg.yaml不加參數也可以。

若不想使用之前定義的變量名:可以使用-e進行替換變量名。

(2)host文件中定義的內容

ansible配置與應用

ansible配置與應用

ansible配置與應用

Templates:模板

執行模板文件中的腳本,并生產結果數據流,需要使用template模板

template:

-a ""

注意此模板只能使用與playbook

示例1:(1)復制一份nginx的配置文件到/root下。重命名后為nginx.conf.j2,其部分配置內容如下

ansible配置與應用

(2)vim test.yaml

ansible配置與應用

(3)ansible-playbook –check  test.yaml

(4)實際運行后,遠程主機的配置文件的結果如下worker_processes 1;

ansible配置與應用

示例2:

– hosts:ngxsrvs

remote_user: root

task:

– name: install nginx package

yum:name=nginx state=latest

– name:install conf file

template:src=/root/nginx.conf.j2 dest=/etc/nginx/nginx.conf

tags:ngxconf

notify:reload nginx service

– name:start nginx service

service:name=nginx state=started enabled=true

handlers:

-name:reload nginx service

shell :/usr/sbin/nginx -s reload

條件測試:

when語句:在task中定義

ansible配置與應用

循環:迭代,需要重復執行的任務

對迭代項的引用,固定變量名為"item",使用with_item屬性給定要迭代的元素;

元素:字符串,字典

基于列表給出元素示例:

ansible配置與應用

基于字典列表給元素示例:

ansible配置與應用

角色:roles

以特定的層級目錄結構進行組織的tasks、variables、handlers、templates、file

role_name/

file/:存儲由copy或script等模塊調用的文件;

tasks/:此目錄中至少應用一個名為main.yml的文件,用于定義各task;其它的文件需要由main.yml進行“包含”調用;

handlers/:此目錄中至少應用一個名為main.yml的文件,用于定義各handlers;其它的文件需要由main.yml進行“包含”調用;

vars/:此目錄中至少應用一個名為main.yml的文件,用于定義各variable;其它的文件需要由main.yml進行“包含”調用;

templates/:存儲由template模塊調用的模板文本;

meta/:此目錄中至少應用一個名為main.yml的文件,用于定義當前角色的特殊設定及其依賴關系;其它的文件需要由main.yml進行“包含”調用;

default/:此目錄中至少應該有一個名為main.yml的文件,用于設定默認變量。

mkdir ./{nginx,memcached,httpd,mysql}/{files,templates,vars,handlers,meta,default,tasks} -pv

原創文章,作者:178babyhanggege,如若轉載,請注明出處:http://www.www58058.com/58594

(0)
178babyhanggege178babyhanggege
上一篇 2016-11-14
下一篇 2016-11-14

相關推薦

  • 如何練好yum的一招一式

      工作時間越久,就越有這樣一個深刻體會,一個新知識或者新的技能一個人學習起來并不會覺得吃力,反而要想把你學習的新知識或者新技能給講清楚讓普通人聽得懂才是最難的,之前我寫過一篇博客講述linux下的RPM包管理器,今天寫的練好yum的一招一式,同樣都是都是在linux系統的軟件包的安裝、卸載、升級等功能的,為什么我們還需要yum那,記得一位大哲學家…

    Linux干貨 2015-11-10
  • 單引號、雙引號和反引號使用方法

        首先向馬哥和馬哥團隊敬個禮,謝謝你們帶我進入Linux的世界,剛開始接觸linux時,經??吹絾我?、雙引號和反引號特殊符號,經常搞混淆和誤用,應該用雙引號,有時用到單引號。經過幾天的混亂引用,總算搞明白了一些,簡單總一下三者的使用和區別。  單引號 ‘’     單引號里的內容全部以普通字符的含義進…

    Linux干貨 2015-07-29
  • CentOS6.8編譯安裝—- php-fpm

    安裝環境: [root@station11 ~]# lsb_release -a Distributor ID: CentOS Description:     CentOS release 6.8 (Final) Release:  6.8 Codename:    …

    Linux干貨 2016-12-21
  • linux網絡屬性管理

    Linux網絡屬性配置 計算機網絡:TCP/IP:協議棧(使用)ISO,OSI:協議棧(學習) MAC:Media Access Control48bits:ICANN:24bits, 2^24地址塊:2^24 網橋(bridge):MAC地址表靜態指定:動態學習:根據原地址學習; 交換機(switch):多端口網橋; IP(Internet protoco…

    Linux干貨 2017-10-14
  • 馬哥教育網絡班25期-第2周作業

    一、Linux文件管理類命令: (1)ls             list 用來顯示目錄列表             …

    Linux干貨 2016-12-12
  • linux多網口綁定

    LINUX多網卡綁定同一IP(BOND): 常用的有三種 mode=0:輪轉策略,有自動備援,但需要”Switch”支援及設定。 mode=1:活動-備份模式,其中一條線若斷線,其他線路將會自動備援。 mode=3:廣播模式,有自動備援,不必”Switch”支援及設定 mode0模式:需要說明的是如果想做成mode 0的負載均衡,僅僅設置這里options …

    2017-07-03
欧美性久久久久