欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Ansible到底是個什么東西?

8nfr_ZTEdevelop ? 來源:未知 ? 作者:李倩 ? 2018-04-08 14:47 ? 次閱讀

前言

最近在重構(gòu)一款命令行工具,使用 golang 重新開發(fā),但需要繼續(xù)維持原有的命令,同時增加新命令。

在重構(gòu)的過程中,需要對現(xiàn)命令行工具和原命令行工具的命令輸出結(jié)果進行比對,確保完全一致(項目要求),命令行工具需要在部署完成系統(tǒng)之后進行使用,每個系統(tǒng)完成時的部署組件又稍微有點差異。所以其實需要在多套服務(wù)主機上進行測試。

需要做這些動作:

拷貝一些配置文件到主機上:用戶配置、IP和端口文件

安裝命令行工具,確保使其在服務(wù)主機上可以使用

執(zhí)行一堆測試命令

按理說,我不斷把需要的配置和二進制文件拷貝到主機上進行測試也能完成。

但在使用的過程中存在下面幾個問題:

測試發(fā)現(xiàn),結(jié)果不對時需要及時修改代碼,再次拷貝二進制文件到主機上

主機環(huán)境需要多次推倒,重新部署,驗證版本更新問題

需要手動一個一個命令的執(zhí)行

測試有幾套主機

看上去手動的方法,有點費勁。

目前我從事的工作就是PaaS部署相關(guān)的,部署層面的腳本的運行、組件的安裝、服務(wù)的啟動等都是使用 Ansible 來操作。具體的腳本編寫由其他同事,我只知道這個東西是干嘛的。沒實質(zhì)性的學(xué)習(xí)。于是想借這個機會主動學(xué)習(xí)下 Ansible.

學(xué)習(xí)之處,差點犯了老問題,即:從頭開始看官方文檔,而不注重當前需要解決的問題。

因為其實整個 Ansible 的內(nèi)容體系很多。不注重當前需要解決的問題,會導(dǎo)致你抓不住重點。

意識到后專注在當前需要解決的問題上:

拷貝配置文件和安裝腳本到多個主機上

在多個主機上測試命令行工具

Ansible

看了上面的事件背景,你大概知道這個 Ansible 到底是個什么東西。

Ansible 是一個配置管理和應(yīng)用部署工具,即在管理主機上操作一些命令就能在節(jié)點主機上進行相應(yīng)的動作。由 Python 編寫,由模塊化組成,即執(zhí)行動作的實體,在 ansible 上都是靠著相應(yīng)的模塊執(zhí)行動作,比如拷貝 copy 模塊、執(zhí)行 command 模塊、shell 模塊、文件 file 模塊等。

Ansible 的目標有如下:

自動化部署應(yīng)用

自動化管理配置

自動化的持續(xù)交付

自動化的(AWS)云服務(wù)管理。

原理

管理主機從 hosts 里讀取主機清單,通過 playbook 按順序同時對管理的主機進行相應(yīng)的操作。

如圖:

管理主機主要是對主機的定義和配置、編寫 playbook(即節(jié)點主機的執(zhí)行動作)。

運行:

1. 命令行

ansible all -m ping

2. playbook

ansible-playbook example.yml

主機清單

編輯文件:/etc/ansible/hosts

即:定義主機名稱,變量等

主機的變量包括什么: 主機的執(zhí)行用戶、連接端口、密碼等

類似于 ini 格式的文件

[test-new-cli] 10.62.60.72 [test-old-cli] 10.62.62.88

上面的例子:將兩個主機的分為兩組:test-new-cli和test-old-cli

主機的變量有這么些:

ansible_ssh_host將要連接的遠程主機名.與你想要設(shè)定的主機的別名不同的話,可通過此變量設(shè)置.

ansible_ssh_portssh端口號.如果不是默認的端口號,通過此變量設(shè)置.

ansible_ssh_user默認的 ssh 用戶名

ansible_ssh_passssh 密碼(這種方式并不安全,我們強烈建議使用 —ask-pass 或 SSH 密鑰)

ansible_sudo_passsudo 密碼(這種方式并不安全,我們強烈建議使用 —ask-sudo-pass)

ansible_sudo_exe (new in version 1.8)sudo 命令路徑(適用于1.8及以上版本)

ansible_connection與主機的連接類型.比如:local, ssh 或者 paramiko.

ansible_ssh_private_key_filessh 使用的私鑰文件.適用于有多個密鑰,而你不想使用 SSH 代理的情況.

ansible_shell_type目標系統(tǒng)的shell類型.默認情況下,命令的執(zhí)行使用 ‘sh’ 語法,可設(shè)置為 ‘csh’ 或 ‘fish’.

ansible_python_interpreter目標主機的 python 路徑.

看不懂怎么用:

舉個例子,你想連接主機192.168.100.100, 切換到 root 用戶下執(zhí)行相應(yīng)的操作。

如果你直接[email protected]會要求你輸入用戶名和密碼。

假如我編輯主機清單使得自己不需要輸入用戶名密碼,怎么操作?

[test-new-cli] example ansible_ssh_host=192.168.100.100 ansible_ssh_user=username ansible_ssh_pass=root

即配置好192.168.100.100的主機別名為example, 主機的用戶名和密碼為:username/root

Yaml

包含三種類型:

鍵值對:key: value

數(shù)組

純量:整型、字符串、布爾型

這個很好理解:如果你熟悉Python, 這三種類型就相當于:map, list, 變量

如果你熟悉golang, 這三種類型就相當于: map, 數(shù)組, 變量

示例:

--- - name: "execute command nodepool node list by { {item.name} }" shell: "{ {item.cli} } nodepool node list { {item.id} }" register: result - name: show result debug: msg: "{ {result.stdout_lines} }" with_items: - { name: "new-cli", cli: "new-cli", id: "1" } - { name: "old-cli", cli: "old-cli", id: "1" }

模塊

Ad-doc

ansible 命令行式,適合執(zhí)行單條命令。

# 操作 192.168.100.100 主機,看管理主機是否和192.168.100.100的主機連通 ansible example -m ping # 操作 192.168.100.100 主機,拷貝管理主機下的/root/opcli/conf 文件至節(jié)點主機/etc/opcli/conf 下 ansible test-new-cli -m copy -a="src=/root/opcli/conf dest=/etc/opcli/conf"

m: 模塊

a: 接參數(shù)

可以看出適合執(zhí)行單條命令

Patterns

假如你的節(jié)點主機分組很多了,Ad-hoc 如何選擇特定特征的節(jié)點主機分組呢?

使用類正則表達式。

比如觸發(fā)所有節(jié)點主機進行動作:

ansible all -m ping ansible * -m ping 兩者等價,都是選擇所有的節(jié)點主機

示例:

1. 主機別名或者IP

one.example.com one.example.com:two.example.com 192.168.1.50 192.168.1.*

2. 一個或多個groups

webservers webservers:dbservers

3. 排除一個組

webservers:!phoenix # 隸屬 webservers 組但同時不在 phoenix組

4. 兩個組的交集

webservers:&staging # 同時隸屬于 webservers 和 staging 組

5. 列表

webservers[0] webservers[0-25]

6. 其他

有什么需求,看官方文檔吧。

Playbook

編寫 yaml 文件,適合執(zhí)行多步操作的復(fù)雜操作??梢钥闯墒茿d-doc 命令的集合。甚至可以看成是一門編程語言。

執(zhí)行:ansible-playbook example.yml

按照 example.yml 文件里的任務(wù)集合按步執(zhí)行任務(wù)。

示例

命令示例,僅舉幾例,有帶參數(shù)、有沒帶參數(shù)的。

我們最終的目標是:在節(jié)點主機上執(zhí)行這些命令進行比對兩者結(jié)果。

新版本:

命令 說明
command-cli nodepool list 查詢資源池
command-cli nodepool node list 查詢資源池節(jié)點
command-cli node list 查詢節(jié)點
command-cli node show 查詢某個節(jié)點
command-cli task list 查詢部署任務(wù)

舊版本:

命令 說明
old-cli nodepool list 查詢資源池
old-cli nodepool node list 查詢資源池節(jié)點
old-cli node list 查詢節(jié)點
old-cli node show 查詢某個節(jié)點
old-cli task list 查詢部署任務(wù)

目錄結(jié)構(gòu):

demo-for-ansible: ---nodepool/nodepool-list.yml ---nodepool/nodepool-node-list.yml ---node/node-list.yml ---node/node-show.yml ---task/task-list.yml ---main.yml

第一步:編寫主機清單

/etc/ansible/hosts

[test_client] 192.168.100.100 ansible_ssh_user=xiewei ansible_ssh_pass=root ansible_connection=ssh 192.168.100.101 ansible_ssh_user=xiewei ansible_ssh_pass=root ansible_connection=ssh 192.168.100.102 ansible_ssh_user=xiewei ansible_ssh_pass=root ansible_connection=ssh

定義主機連接類型、用戶名、密碼

第二步:編寫 yaml 文件

主要動作:

在節(jié)點主機上創(chuàng)建兩個文件夾:/etc/client/conf和/et/client/commands

拷貝管理主機目錄:/etc/client/conf文件至節(jié)點主機:/etc/client/conf

拷貝管理主機二進制文件:/root/gosrc/src/client/command-cli至節(jié)點主機/etc/client/commands

軟連接節(jié)點主機二進制文件:/etc/client/commands/command-cli至節(jié)點主機/usr/bin/command-cli

執(zhí)行上表中查詢命令:nodepool, node, task

main.yml

--- - hosts: test_client remote_user: root become: yes become_user: root become_method: sudo tasks: # 在節(jié)點主機上創(chuàng)建目錄:/etc/client/conf - name: create /etc/client/conf /etc/client/commands file: path: "/etc/client/{ {item} }" owner: root group: root mode: 0755 state: directory with_items: - "conf" - "commands" # 拷貝管理主機配置文件/etc/client/conf和二進制文件至 /etc/client/conf, /etc/client/commands - name: copy /etc/client/conf copy: src="{ { item.src } }" dest="{ { item.dest } }" owner=root group=root mode=0644 with_items: - { src: "/etc/client/conf", dest: "/etc/client/conf" } - { src: "/root/gosrc/src/client/command-cli", dest: "/etc/client/commands"} # 軟連接到 /usr/bin/command-cli - name: link /etc/client/commands file: src="/etc/client/commands/command-cli" dest="/usr/bin/command-cli" state=link # nodePool list - include_tasks: "nodepool/nodepool-list.yml" with_items: - { client: "new client", name: "command-cli"} - { client: "old client", name: "old-cli"} # nodePool node list - include_tasks: "nodepool/nodepool-node-list.yml" with_items: - { id: "1", client: "new client", name: "command-cli"} - { id: "1", client: "old client", name: "old-cli"} # node list - include_tasks: "node/node-list.yml" with_items: - { client: "new client", name: "command-cli"} - { client: "old client", name: "old-cli"} # node show - include_tasks: "node/node-show.yml" with_items: - { client: "new client", name: "command-cli", id: 1} - { client: "old client", name: "old-cli", id: 1} # task list - include_tasks: "task/task-list.yml" with_items: - { client: "new client", name: "command-cli"} - { client: "old client", name: "old-cli"}

task-list.yml

--- - name: execute command task list shell: "{ {item.name} } task list" register: result - name: show result debug: msg: "{ {result.stdout_lines} }"

第三步: 檢查語法

兩種方法

ansible-playbook main.yml --syntax-check

先安裝pip install ansible-lint

ansible-lint main.yml

第四步: 執(zhí)行

ansible-playbook main.yml

整個的編寫流程大概是這樣。核心是編寫 yml 文件,調(diào)用 ansible 支持的各種模塊完成任務(wù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 主機
    +關(guān)注

    關(guān)注

    0

    文章

    1013

    瀏覽量

    35321
  • PaaS
    +關(guān)注

    關(guān)注

    2

    文章

    132

    瀏覽量

    21547

原文標題:干貨 | Ansible 上手指南

文章出處:【微信號:ZTEdeveloper,微信公眾號:中興開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ucos3移植的兩錯誤信息到底是什么?

    INT_SYS_DisableIRQGlobal (referred from cpu_c.o). 另外一是INT_SYS_EnableIRQGlobal。這兩到底是什么東西,怎
    發(fā)表于 08-11 21:47

    請教技術(shù)大佬 三態(tài)門與高阻態(tài)是撒子東西?

    新人在工作中經(jīng)常碰到三態(tài)門與高阻態(tài);請教技術(shù)大佬,這兩到底是什么東西 ?
    發(fā)表于 04-07 06:59

    在ahdllib中opamp的veriloga代碼中,cout是什么東西?

    electrical,到底是什么東西?輸出電容嗎?如果是的話怎么和vref聯(lián)系起來呢?多謝,多謝! 備注:vref 為1/2*vdd我是初學(xué)veriloga.能把該運放的小信號圖給我畫一下嗎?這是一級運放吧
    發(fā)表于 06-24 06:59

    手機參數(shù)中的4+64G到底是什么東西

    了解手機中的4+64G到底是什么東西??!
    發(fā)表于 09-14 09:07

    ARM是什么東西

    ARM是什么東西? ARM ( Advanced RISC Machines ),既可以認為是一公司的名字,也可以
    發(fā)表于 03-30 13:42 ?2109次閱讀

    LiFePO4是什么東西?

    LiFePO4是什么東西?  LiFePO4是自行車專用電池
    發(fā)表于 10-27 10:31 ?2855次閱讀

    全液晶儀表到底是什么東西?

    當談到汽車虛擬座艙時,就繞不過去兩關(guān)鍵詞:智能和大屏。而隨著車內(nèi)信息量爆增,人們對車輛科技感的要求也在不自覺地提高。 其中,液晶顯示技術(shù)可以說在最近十年逐漸成為了市場中的主流,而在車內(nèi)有這樣一塊看起來頗具逼格的大屏幕,載人的時候貌似也能多幾份面子。那全液晶儀表到底是什么
    發(fā)表于 04-23 11:26 ?1.1w次閱讀

    CPU釬焊工藝到底是什么

    9代酷睿處理器已經(jīng)發(fā)布了不少型號了,雖然Core i7-9700K加了2核心但是卻刪了超線程。而最吸引人的點卻是傳說中的“釬焊工藝”,今天我們來簡單聊聊這個“釬焊”到底是什么東西
    發(fā)表于 10-23 11:09 ?4w次閱讀

    工業(yè)觸摸屏到底是什么東西

    對于觸摸屏,我們大家都經(jīng)常看見,比如我們現(xiàn)在的手機屏幕,就是一觸摸屏,銀行的叫號機器,也是一觸摸屏,那么工業(yè)觸摸屏又是什么東西呢?
    發(fā)表于 05-24 10:30 ?6177次閱讀

    元宇宙到底是什么東西

     2021年元宇宙大火,也成為了人們的投資的一風口,也有人把2021年看做是元宇宙的元年。那么元宇宙到底是什么?
    的頭像 發(fā)表于 11-02 15:54 ?5391次閱讀

    芯片到底是什么東西

    全球芯片短缺愈演愈烈,多家車企瀕臨停產(chǎn),芯片已經(jīng)成為我們不可或缺的物件,在日常生活中有著非常廣泛的應(yīng)用,越來越多的高科技產(chǎn)品都在使用芯片,那么芯片到底是什么東西?
    的頭像 發(fā)表于 01-04 11:56 ?2.1w次閱讀

    集成電路到底是什么東西

    在我們的生活中,許多設(shè)備里都會出現(xiàn)集成電路,或許有的小伙伴很困惑集成電路到底是什么東西,那么下面我們一起來了解一下吧。 集成電路是一種微型電子器件或部件,縮寫為IC,就是把一定數(shù)量的常用電子元件通過
    的頭像 發(fā)表于 02-01 10:40 ?1w次閱讀

    Armv8-A到底是什么東西呢?

    前面的文章中經(jīng)常提到Armv8-A。那么到底Armv8-A是什么東西呢?這個問題要說簡單也很簡單,要說復(fù)雜也很復(fù)雜。今天我們花點時間來簡單研究一下。
    的頭像 發(fā)表于 04-19 14:32 ?5076次閱讀
    Armv8-A<b class='flag-5'>到底是</b><b class='flag-5'>什么東西</b>呢?

    脈寬調(diào)制到底是什么東西

    昨天在結(jié)尾處提到了PAM、PWM和SPWM,說它們經(jīng)常會在一些說明書或參考書中見到,尤其是在變頻器的說明書當中,那么,它們到底是什么東西哪?今天就說道說道這個事。
    的頭像 發(fā)表于 08-30 15:59 ?1607次閱讀
    脈寬調(diào)制<b class='flag-5'>到底是</b><b class='flag-5'>個</b><b class='flag-5'>什么東西</b>?

    硬件測試是測試什么東西

    某一型號或者某一批次的產(chǎn)品質(zhì)量存在問題,產(chǎn)品設(shè)計不合理而導(dǎo)致大量召回的新聞。 所以硬件測試是對于產(chǎn)品研發(fā)過程中的重要把關(guān),保證最終產(chǎn)品上市是一相對完美的狀態(tài)。 那這個硬件測試到底是測試什么
    的頭像 發(fā)表于 11-06 10:45 ?2756次閱讀