成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Ansible運(yùn)維工具

KevinYan / 3604人閱讀

摘要:與最大的區(qū)別是無需在被控主機(jī)部署任何客戶端代理,默認(rèn)直接通過通道進(jìn)行遠(yuǎn)程命令執(zhí)行或下發(fā)配置相同點(diǎn)是都具備功能強(qiáng)大靈活的系統(tǒng)管理狀態(tài)配置,兩者都提供豐富的模板及,對(duì)云計(jì)算平臺(tái)大數(shù)據(jù)都有很好的支持。臨時(shí)禁止使用庫。強(qiáng)制更新的緩存。

概述

運(yùn)維工具按需不需要有代理程序來劃分的話分兩類:

agent(需要有代理工具):基于專用的agent程序完成管理功能,puppet, func, zabbix

agentless(無須代理工具):基于ssh服務(wù)完成管理,ansible, fabric

簡(jiǎn)介

  Ansible是一個(gè)簡(jiǎn)單的自動(dòng)化運(yùn)維管理工具,基于Python語言實(shí)現(xiàn),由Paramiko和PyYAML兩個(gè)關(guān)鍵模塊構(gòu)建,可用于自動(dòng)化部署應(yīng)用、配置、編排task(持續(xù)交付、無宕機(jī)更新等)。主版本大概每2個(gè)月發(fā)布一次。

  Ansible與Saltstack最大的區(qū)別是Ansible無需在被控主機(jī)部署任何客戶端代理,默認(rèn)直接通過SSH通道進(jìn)行遠(yuǎn)程命令執(zhí)行或下發(fā)配置:相同點(diǎn)是都具備功能強(qiáng)大、靈活的系統(tǒng)管理、狀態(tài)配置,兩者都提供豐富的模板及API,對(duì)云計(jì)算平臺(tái)、大數(shù)據(jù)都有很好的支持。

特點(diǎn):
    部署簡(jiǎn)單,只需在主控端部署Ansible環(huán)境,被控端無需做任何操作;

    默認(rèn)使用SSH協(xié)議對(duì)設(shè)備進(jìn)行管理;

    主從集中化管理;

    配置簡(jiǎn)單、功能強(qiáng)大、擴(kuò)展性強(qiáng);

    支持API及自定義模塊,可通過Python輕松擴(kuò)展;

    通過Playbooks來定制強(qiáng)大的配置、狀態(tài)管理;

    對(duì)云計(jì)算平臺(tái)、大數(shù)據(jù)都有很好的支持;

    提供一個(gè)功能強(qiáng)大、操作性強(qiáng)的Web管理界面和REST API接口——AWX平臺(tái)。

    冪等性:一種操作重復(fù)多次結(jié)果相同

簡(jiǎn)評(píng):
(1)、輕量級(jí),無需在客戶端安裝agent,更新時(shí),只需在操作機(jī)上進(jìn)行一次更新即可;
(2)、批量任務(wù)執(zhí)行可以寫成腳本,而且不用分發(fā)到遠(yuǎn)程就可以執(zhí)行;
(3)、使用python編寫,維護(hù)更簡(jiǎn)單,ruby語法過于復(fù)雜;
(4)、支持sudo。

Ansible架構(gòu)圖

Ansible核心組件說明:

    Ansible:Ansible的核心程序

    Host Lnventory:記錄了每一個(gè)由Ansible管理的主機(jī)信息,信息包括ssh端口,root帳號(hào)密碼,ip地址等等??梢酝ㄟ^file來加載,可以通過CMDB加載

    Playbooks:YAML格式文件,多個(gè)任務(wù)定義在一個(gè)文件中,使用時(shí)可以統(tǒng)一調(diào)用,“劇本”用來定義那些主機(jī)需要調(diào)用那些模塊來完成的功能.

    Core Modules:Ansible執(zhí)行任何管理任務(wù)都不是由Ansible自己完成,而是由核心模塊完成;Ansible管理主機(jī)之前,先調(diào)用core Modules中的模塊,然后指明管理Host Lnventory中的主機(jī),就可以完成管理主機(jī)。

    Custom Modules:自定義模塊,完成Ansible核心模塊無法完成的功能,此模塊支持任何語言編寫。

    Connection Plugins:連接插件,Ansible和Host通信使用
ansible執(zhí)行過程,其中暖色調(diào)的代表已經(jīng)模塊化。

基礎(chǔ)環(huán)境的安裝與配置 ssh免密登錄 配置

(1)、SSH免密鑰登錄設(shè)置

ansiblemaster:10.1.6.172 Centos7.2

ansibleslave1:10.1.6.72 Centos7.2

ansibleslave2:10.1.6.73 Centos7.2

ansibleslave3:10.1.6.68 Centos6.8

生成公鑰/私鑰

ssh-keygen -N ""

分發(fā)密鑰

# ssh-copy-id [email protected]
# ssh-copy-id [email protected]
# ssh-copy-id [email protected]

測(cè)試

注意

[root@ansible_master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.6.72

-bash: ssh-copy-id: command not found

報(bào)錯(cuò)了
解決方法:

yum -y install openssh-clients
ansible安裝及程序環(huán)境:

安裝

# yum install ansible

程序:

ansible
ansible-playbook 
ansible-doc

配置文件:

/etc/ansible/ansible.cfg

host_key_checking = False

主機(jī)清單:

/etc/ansible/hosts

插件目錄:

/usr/share/ansible_plugins/
ansible命令的使用說明

常用選項(xiàng)

ansible -m MOD_NAME -a MOD_ARGS
表示調(diào)用什么模塊,使用模塊的那些參數(shù)

ansible -h

[root@localhost ~]# ansible -h
Usage: ansible [options]

Options:
-a MODULE_ARGS, --args=MODULE_ARGS 模塊的參數(shù),如果執(zhí)行默認(rèn)COMMAND的模塊,即是命令參數(shù),如:“date”,"pwd"等等

                    module arguments    模塊參數(shù)

-k, --ask-pass ask for SSH password 登錄密碼,提示輸入SSH密碼而不是假設(shè)基于密鑰的驗(yàn)證
--ask-su-pass ask for su password su切換密碼
-K, --ask-sudo-pass ask for sudo password 提示密碼使用sudo,sudo表示提權(quán)操作
--ask-vault-pass ask for vault password
-B SECONDS, --background=SECONDS 后臺(tái)運(yùn)行超時(shí)時(shí)間

                    run asynchronously, failing after X seconds
                    (default=N/A)

-C, --check don"t make any changes; instead, try to predict some 只是測(cè)試一下會(huì)改變什么內(nèi)容,不會(huì)真正去執(zhí)行;相反,試圖預(yù)測(cè)一些可能發(fā)生的變化

                    of the changes that may occur

-c CONNECTION, --connection=CONNECTION 連接類型使用。可能的選項(xiàng)是paramiko(SSH),SSH和地方。當(dāng)?shù)刂饕怯糜赾rontab或啟動(dòng)。

                    connection type to use (default=smart)

-f FORKS, --forks=FORKS 并行任務(wù)數(shù)。NUM被指定為一個(gè)整數(shù),默認(rèn)是5

                    specify number of parallel processes to use
                    (default=5)

-h, --help show this help message and exit 打開幫助文檔API
-i INVENTORY, --inventory-file=INVENTORY 指定庫存主機(jī)文件的路徑,默認(rèn)為/etc/ansible/hosts

                    specify inventory host file
                    (default=/etc/ansible/hosts)

-l SUBSET, --limit=SUBSET 進(jìn)一步限制所選主機(jī)/組模式 --limit=192.168.91.135 只對(duì)這個(gè)ip執(zhí)行

                    further limit selected hosts to an additional pattern

--list-hosts outputs a list of matching hosts; does not execute

                    anything else

-m MODULE_NAME, --module-name=MODULE_NAME 執(zhí)行模塊的名字,默認(rèn)使用 command 模塊,所以如果是只執(zhí)行單一命令可以不用 -m參數(shù)

                    module name to execute (default=command)

-M MODULE_PATH, --module-path=MODULE_PATH 要執(zhí)行的模塊的路徑,默認(rèn)為/usr/share/ansible/

                    specify path(s) to module library
                    (default=/usr/share/ansible/)

-o, --one-line condense output 壓縮輸出,摘要輸出.嘗試一切都在一行上輸出。
-P POLL_INTERVAL, --poll=POLL_INTERVAL 調(diào)查背景工作每隔數(shù)秒。需要- b

                    set the poll interval if using -B (default=15)

--private-key=PRIVATE_KEY_FILE 私鑰路徑,使用這個(gè)文件來驗(yàn)證連接

                    use this file to authenticate the connection

-S, --su run operations with su 用 su 命令
-R SU_USER, --su-user=SU_USER 指定SU的用戶,默認(rèn)是root用戶

                    run operations with su as this user (default=root)

-s, --sudo run operations with sudo (nopasswd)
-U SUDO_USER, --sudo-user=SUDO_USER sudo到哪個(gè)用戶,默認(rèn)為 root

                    desired sudo user (default=root)

-T TIMEOUT, --timeout=TIMEOUT 指定SSH默認(rèn)超時(shí)時(shí)間, 默認(rèn)是10S

                    override the SSH timeout in seconds (default=10)

-t TREE, --tree=TREE log output to this directory 將日志內(nèi)容保存在該輸出目錄,結(jié)果保存在一個(gè)文件中在每臺(tái)主機(jī)上。
-u REMOTE_USER, --user=REMOTE_USER 遠(yuǎn)程用戶, 默認(rèn)是root用戶

                    connect as this user (default=root)

--vault-password-file=VAULT_PASSWORD_FILE

                    vault password file

-v, --verbose verbose mode (-vvv for more, -vvvv to enable 詳細(xì)信息

                    connection debugging)

--version show program"s version number and exit 輸出ansible的版本

ansible主機(jī)清單的配置

vim /etc/ansible/hosts

定義方式:

直接指明主機(jī)地址或主機(jī)名

  blue.example.com
  192.168.100.1

定義一個(gè)主機(jī)組[組名]把地址或主機(jī)名加進(jìn)去

  [webservers]
  alpha.example.org
  beta.example.org
  192.168.1.100

  #組成員可以使用通配符來匹配,如下
  www[001:006].example.com  #表示從www001-www006主機(jī)

如果你沒有使用公鑰,想要使用密碼,你也可以這樣寫(適用于第一次登陸控制)

  格式:【主機(jī)名】 【主機(jī)地址】 【主機(jī)密碼】  默認(rèn)是root用戶來進(jìn)行的

  [keepalived]
  keepalived1  ansible_ssh_host=192.168.146.136 ansible_ssh_pass="test"
  keepalived2  ansible_ssh_host=192.168.146.137 ansible_ssh_pass="test"

[testhost]
10.6.0.152
10.6.0.153 ansible_ssh_host=10.6.0.153 ansible_ssh_pass="yanjin"
10.6.0.153 ansible_ssh_host=10.6.0.153 ansible_ssh_pass="yanjin"

ansible的使用ansible-doc

一般用法:

ansible-doc -l 獲取模塊信息

ansible-doc -s MOD_NAME 獲取指定模塊的使用幫助

[root@localhost ~]# ansible-doc -h
Usage: ansible-doc [options] [module...]

Show Ansible module documentation 顯示Ansible模塊文檔

Options:
--version show program"s version number and exit 顯示ansible-doc的版本號(hào)
-h, --help show this help message and exit 顯示命令參數(shù)API文檔
-M MODULE_PATH, --module-path=MODULE_PATH 查詢模塊,--module-path=MODULE_PATH 指定模塊的路徑

                    Ansible modules/ directory

-l, --list List available modules 顯示已存在的所有模塊列表
-s, --snippet Show playbook snippet for specified module(s) 顯示playbook制定模塊的用法
-v Show version number and exit 顯示ansible-doc的版本號(hào)

測(cè)試:成功

ansible 10.6.0.152 -m command -a "id root"

10.6.0.152 | SUCCESS | rc=0 >>

uid=0(root) gid=0(root) groups=0(root)
ansible 10.6.0.153 -m command -a "id root"
10.6.0.153 | SUCCESS | rc=0 >>
uid=0(root) gid=0(root) groups=0(root)

ansible testhost -m command -a "id root"
10.6.0.152 | SUCCESS | rc=0 >>
uid=0(root) gid=0(root) groups=0(root)
10.6.0.153 | SUCCESS | rc=0 >>
uid=0(root) gid=0(root) groups=0(root)

[root@master ~]# ansible proxy -m command -a "ls -lh /var/log/squid/access.log"
10.6.0.100 | SUCCESS | rc=0 >>
-rw-r----- 1 squid nogroup 0 Nov 17 11:02 /var/log/squid/access.log
[root@master ~]# ansible proxy -m command -a "ls -lh /var/log/squid/store.log"
10.6.0.100 | SUCCESS | rc=0 >>
-rw-r----- 1 squid nogroup 320 Nov 17 11:03 /var/log/squid/store.log
[root@master ~]#

ansible使用 之一 “命令管理方式”

常用模塊:

=================================

ping:探測(cè)目標(biāo)主機(jī)是否存活;

=================================

command:在遠(yuǎn)程主機(jī)執(zhí)行命令;不支持|管道命令

=================================

ansible storm_cluster -m command -a "ls –al /tmp/resolv.conf"

相關(guān)選項(xiàng)如下:
creates:一個(gè)文件名,當(dāng)該文件存在,則該命令不執(zhí)行
free_form:要執(zhí)行的linux指令
chdir:在執(zhí)行指令之前,先切換到該目錄
removes:一個(gè)文件名,當(dāng)該文件不存在,則該選項(xiàng)不執(zhí)行
executable:切換shell來執(zhí)行指令,該執(zhí)行路徑必須是一個(gè)絕對(duì)路徑

shell:在遠(yuǎn)程主機(jī)上調(diào)用shell解釋器運(yùn)行命令,支持shell的各種功能,例如管道等 ;

注意:command和shell模塊的核心參數(shù)直接為命令本身;而其它模塊的參數(shù)通常為“key=value”格式;

================================

copy:復(fù)制文件到遠(yuǎn)程主機(jī),可以改權(quán)限等

================================

用法:
(1) 復(fù)制文件

-a "src=  dest=  "

(2) 給定內(nèi)容生成文件

    -a "content=  dest=  "

常用用法

    第一種:直接復(fù)制

    第二種:生成內(nèi)容的復(fù)制

ansible test -m copy -a "src=/root/test dest=/home/testcopy mode=640"
10.6.0.152 | SUCCESS => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/home/testcopy",
    "gid": 0,
    "group": "root",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "mode": "0640",
    "owner": "root",
    "size": 0,
    "src": "/root/.ansible/tmp/ansible-tmp-1479352868.18-83082559134161/source",
    "state": "file",
    "uid": 0

}

相關(guān)選項(xiàng)如下:
backup:在覆蓋之前,將源文件備份,備份文件包含時(shí)間信息。有兩個(gè)選項(xiàng):yes|no
content:用于替代“src”,可以直接設(shè)定指定文件的值
dest:必選項(xiàng)。要將源文件復(fù)制到的遠(yuǎn)程主機(jī)的絕對(duì)路徑,如果源文件是一個(gè)目錄,那么該路徑也必須是個(gè)目錄
directory_mode:遞歸設(shè)定目錄的權(quán)限,默認(rèn)為系統(tǒng)默認(rèn)權(quán)限
force:如果目標(biāo)主機(jī)包含該文件,但內(nèi)容不同,如果設(shè)置為yes,則強(qiáng)制覆蓋,如果為no,則只有當(dāng)目標(biāo)主機(jī)的目標(biāo)位置不存在該文件時(shí),才復(fù)制。默認(rèn)為yes
others:所有的file模塊里的選項(xiàng)都可以在這里使用
src:被復(fù)制到遠(yuǎn)程主機(jī)的本地文件,可以是絕對(duì)路徑,也可以是相對(duì)路徑。如果路徑是一個(gè)目錄,它將遞歸復(fù)制。在這種情況下,如果路徑使用“/”來結(jié)尾,則只復(fù)制目錄里的內(nèi)容,如果沒有使用“/”來結(jié)尾,則包含目錄在內(nèi)的整個(gè)內(nèi)容全部復(fù)制,類似于rsync。

===============================

file :設(shè)置文件屬性。

===============================

用法:
(1) 創(chuàng)建目錄:

-a "path=。。。  state=directory"

(2) 創(chuàng)建鏈接文件:

-a "path=。。。  src=...  state=link"

(3) 刪除文件:

-a "path=。。。  state=absent"

相關(guān)選項(xiàng)如下:

force:需要在兩種情況下強(qiáng)制創(chuàng)建軟鏈接,一種是源文件不存在,但之后會(huì)建立的情況下;另一種是目標(biāo)軟鏈接已存在,需要先取消之前的軟鏈,然后創(chuàng)建新的軟鏈,有兩個(gè)選項(xiàng):yes|no
group:定義文件/目錄的屬組
mode:定義文件/目錄的權(quán)限
owner:定義文件/目錄的屬主
path:必選項(xiàng),定義文件/目錄的路徑
recurse:遞歸設(shè)置文件的屬性,只對(duì)目錄有效
src:被鏈接的源文件路徑,只應(yīng)用于state=link的情況
dest:被鏈接到的路徑,只應(yīng)用于state=link的情況
state:

   directory:如果目錄不存在,就創(chuàng)建目錄
   file:即使文件不存在,也不會(huì)被創(chuàng)建
   link:創(chuàng)建軟鏈接
   hard:創(chuàng)建硬鏈接
   touch:如果文件不存在,則會(huì)創(chuàng)建一個(gè)新的文件,如果文件或目錄已存在,則更新其最后修改時(shí)間
   absent:刪除目錄、文件或者取消鏈接文件

==============================

fetch: 從遠(yuǎn)程某一個(gè)主機(jī)獲取文件到本地

==============================

cron: 管理cron計(jì)劃任務(wù)

==============================


ansible all -m cron -a "name="sync time" state=absent" 表示刪除此任務(wù)

a "": 設(shè)置管理節(jié)點(diǎn)生成定時(shí)任務(wù)
action: cron

backup= # 如果設(shè)置,創(chuàng)建一個(gè)crontab備份
cron_file= #如果指定, 使用這個(gè)文件cron.d,而不是單個(gè)用戶crontab
day= # 日應(yīng)該運(yùn)行的工作( 1-31, , /2, etc )
hour= # 小時(shí) ( 0-23, , /2, etc )
job= #指明運(yùn)行的命令是什么
minute= #分鐘( 0-59, , /2, etc )
month= # 月( 1-12, , /2, etc )
name= #定時(shí)任務(wù)描述
reboot # 任務(wù)在重啟時(shí)運(yùn)行,不建議使用,建議使用special_time
special_time # 特殊的時(shí)間范圍,參數(shù):reboot(重啟時(shí)),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小時(shí))

state #指定狀態(tài),prsent表示添加定時(shí)任務(wù),也是默認(rèn)設(shè)置,absent表示刪除定時(shí)任務(wù)

user # 以哪個(gè)用戶的身份執(zhí)行
weekday # 周 ( 0-6 for Sunday-Saturday, *, etc )

=========================

yum:yum安裝軟件,也有apt,zypper

=========================

conf_file #設(shè)定遠(yuǎn)程yum安裝時(shí)所依賴的配置文件。如配置文件沒有在默認(rèn)的位置。
disable_gpg_check #是否禁止GPG checking,只用于present" or latest"。
disablerepo #臨時(shí)禁止使用yum庫。 只用于安裝或更新時(shí)。
enablerepo #臨時(shí)使用的yum庫。只用于安裝或更新時(shí)。
name= #所安裝的包的名稱
state #present安裝, latest安裝最新的, absent 卸載軟件。
update_cache #強(qiáng)制更新yum的緩存。

==============================

service: 服務(wù)程序管理

==============================

arguments #命令行提供額外的參數(shù)
enabled #設(shè)置開機(jī)啟動(dòng)。
name= #服務(wù)名稱
runlevel #開機(jī)啟動(dòng)的級(jí)別,一般不用指定。
sleep #在重啟服務(wù)的過程中,是否等待。如在服務(wù)關(guān)閉以后等待2秒再啟動(dòng)。
state #started啟動(dòng)服務(wù), stopped停止服務(wù), restarted重啟服務(wù), reloaded重載配置

啟動(dòng)httpd服務(wù):

ansible all -m service -a "name=httpd state=started"

開機(jī)自啟動(dòng)

ansible all -m service -a "name=httpd  enabled=true"

================================
## group: 組管理

================================

[root@node1 ~]# ansible-doc -s group

name: 添加或刪除組
action: group

gid # 設(shè)置組的GID號(hào)
name= # 管理組的名稱
state # 指定組狀態(tài),默認(rèn)為創(chuàng)建,設(shè)置值為absent為刪除
system # 設(shè)置值為yes,表示為創(chuàng)建系統(tǒng)組

================================

User:用戶管理

================================

-a ""
action: user
comment # 用戶的描述信息
createhom # 是否創(chuàng)建家目錄
force # 在使用state=absent"是, 行為與userdel --force"一致.
group # 指定基本組
groups # 指定附加組,如果指定為("groups=")表示刪除所有組
home # 指定用戶家目錄
login_class #可以設(shè)置用戶的登錄類 FreeBSD, OpenBSD and NetBSD系統(tǒng).
move_home # 如果設(shè)置為`home="時(shí), 試圖將用戶主目錄移動(dòng)到指定的目錄
name= # 指定用戶名
non_unique # 該選項(xiàng)允許改變非唯一的用戶ID值
password # 指定用戶密碼
remove # 在使用 state=absent"時(shí), 行為是與 userdel --remove"一致.
shell # 指定默認(rèn)shell
state #設(shè)置帳號(hào)狀態(tài),不指定為創(chuàng)建,指定值為absent表示刪除
system # 當(dāng)創(chuàng)建一個(gè)用戶,設(shè)置這個(gè)用戶是系統(tǒng)用戶。這個(gè)設(shè)置不能更改現(xiàn)有用戶。
uid #指定用戶的uid
update_password # 更新用戶密碼
expires #指明密碼的過期時(shí)間

例:創(chuàng)建用戶并添加密碼
setup:獲取指定主機(jī)的facts。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27045.html

相關(guān)文章

  • Ansible運(yùn)維工具

    摘要:與最大的區(qū)別是無需在被控主機(jī)部署任何客戶端代理,默認(rèn)直接通過通道進(jìn)行遠(yuǎn)程命令執(zhí)行或下發(fā)配置相同點(diǎn)是都具備功能強(qiáng)大靈活的系統(tǒng)管理狀態(tài)配置,兩者都提供豐富的模板及,對(duì)云計(jì)算平臺(tái)大數(shù)據(jù)都有很好的支持。臨時(shí)禁止使用庫。強(qiáng)制更新的緩存。 概述 運(yùn)維工具按需不需要有代理程序來劃分的話分兩類: agent(需要有代理工具):基于專用的agent程序完成管理功能,puppet, func, zabb...

    baoxl 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<