Ansible的基礎知識,以及ansible的應用


首先安裝ansible,這個程序包是由epel源提供的,因此要指定好源,而後yum  install  ansible就能夠了nginx

172.16.249.195centos7)作管理端,而後172.16.249.115centos7)和172.16.249.36centos6)作被管理端web

配置文件在/etc/ansible/ansible.cfgshell

/etc/ansible/hosts主機清單,簡單來講就是要管理的主機列表centos

 

簡單應用:負載均衡

使用主機密鑰來進行鏈接其餘主機,ssh

使用ssh-keygen  -t  rsa  -P’’生成一個密碼,ide

 spacer.gif

而後把公鑰提供給遠程被管理的主機測試

spacer.gif

通常也要管理本身,因此把這個公鑰也複製一份給本身ui

wKioL1Y4J3jTR_yqAAIJfZ7Aqhc967.jpg

而後測試下,不用密鑰,就能夠鏈接了url

wKioL1Y4JxvgLMi6AAJ1J5Ek-k0045.jpg

spacer.gif

spacer.gif

能夠看到沒問題了,這樣就能夠根據主機密碼,來管理遠程主機了

 

在裝有ansible程的遠程主機上運行一個命令:

                                               ansible172.16.249.36 -m command -a 'ifconfig'   這個裏的主機要在主機清單裏,要否則會說找不到主機的

而後修改/etc/ansible/hosts文件(主機清單的配置文件),(首先複製一份,做爲備份)

修改以下:

spacer.gif

而後在執行命令

spacer.gif

能夠看到執行成功了

還可讓所有主機執行這個命令

spacer.gif

ansible的經常使用模塊

172.16.249.195centos7)作管理端,而後172.16.249.115centos7)和172.16.249.159centos7)作被管理端

  ansible的命令格式:

      ansible  <host-pattern>  [-f forks]  [-m module_name] [-a args]   argskey=value

     ansible-doc  –l :列出全部的模塊

經常使用模塊:

command:輸入命令的模塊(能夠省略),不過都是簡單的命令,複雜的帶管道的須要使用shell模塊

-a  ‘COMMAND’

    例:ansible all-a 'ifconfig'或者ansible all –m command -a 'ifconfig'

shell

-a  ‘COMMAND’

    例:ansiblewebsrvs -m shell -a 'echo "<h1>Hello Word</h1>"  > /tmp/test.tmp'

spacer.gif

user:建立用戶的

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

        例: ansibleall -m user -a 'name=user1 state=present'

spacer.gif

group:建立組

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

cron:週期性任務

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

copy:複製

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

file:文件相關的操做

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

ping:探測主機是否在線

    沒有參數

yum:程序包管理

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

service:服務相關的操做

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

script:腳本相關的

    -a '/path/to/script'

setup:系統的詳細信息

這些就再也不演示了,

 

  playbook的核心元素:

tasks: 任務

variables: 變量

templates: 模板

handlers: 處理器

roles: 角色


變量:

        facts

--extra-vars "name=value name=value"

role定義

Inventory中的變量:

主機變量

    hostname name=value name=value

組變量

[groupname:vars]

name=value

name=value

Inventory的高級用法:


Playbook的結構:

      -host: 

      vars:

       remote_user: 

   tasks:(能夠有多個)

   variables:(能夠有多個)

   handlers:(能夠有多個)

      - host: 

  - host: 

下面以一個示例來演示ansible的使用,使用ansible安裝一個高可用的nginx負載均衡集羣(keepalived+nginx),

keepalived的實現使用ansible的角色加重本實現(實現的過程再也不說明,示例的代碼在附件中)

 首先要編輯/etc/ansible/hosts這個文件以下:

wKiom1Y4LbDTN4xRAAFI74idLdY193.jpg

而後建立一個目錄ansible_keepalived,而後在這個目錄下建立一些目錄

mkdir -pv ansible_keepalived/roles/{synctime,keepalived,nginx,}/{files,templates,vars,tasks,handlers,meta}

 而後在這些目錄里加入文件,具體不在演示,查看附件裏的文件就能夠了,配置都在裏面。若是不理解的能夠查看官網文檔或者跟本人留言。

相關文章
相關標籤/搜索