日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Ansible 快速入门

發(fā)布時(shí)間:2024/4/11 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ansible 快速入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Ansible 是什么?

Ansible是一個(gè)配置管理和配置工具,它使用SSH連接到服務(wù)器并運(yùn)行配置好的任務(wù),服務(wù)器上只需要開(kāi)啟ssh,所有工作都交給client端的ansible負(fù)責(zé)。

當(dāng)我們有批量部署的需求時(shí),我們可以自己寫腳本,但是更推薦使用 Ansible。使用 Ansible 無(wú)需編碼只需要配置 yaml 文件即可,并且 Ansible 已經(jīng)內(nèi)置了冪等性、并發(fā)度控制等功能,大大減少了批量部署時(shí)的工作量。

Ansible 原理示意圖如上,我們需要關(guān)注以下 3 點(diǎn)就能掌握 Ansible 的大致原理。第一,hosts 配置文件的作用是告訴 Ansible 你的程序要部署到哪些機(jī)器;第二,yaml 文件的作用是告訴 Ansible 在目標(biāo)機(jī)器上執(zhí)行哪些操作。第三,Ansible 不需要在目標(biāo)機(jī)器上安裝客戶端,它通過(guò) SSH 把指令和要部署的程序發(fā)送到目標(biāo)機(jī)器上。

安裝 Ansile

安裝命令:

python3 -m pip install --user ansible==2.5.4

驗(yàn)證安裝是否正確:

ansible --version

配置 Ansible

  • 配置 .ansible.cfg 文件

.ansible.cfg 的路徑:~/.ansible.cfg

將以下內(nèi)容寫入 .ansible.cfg 文件:

[defaults] # inventory 是聲明 hosts 配置文件 inventory=~/.ansible/hosts
  • SSH 使用密鑰登錄服務(wù)器

設(shè)置 SSH 通過(guò)密鑰登錄。使用 ssh-keygen 命令生成密鑰對(duì),把 id_rsa.pub 寫入目標(biāo)服務(wù)器的 authorized_keys 文件中。

  • 編輯 hosts 文件

hosts 配置文件的格式是 ini。示例如下

# serviceA 是集群名稱 [serviceA] # 枚舉 serviceA 集群的 ip 地址 192.168.33.10

編輯 YAML 文件

告訴 Ansible 在目標(biāo)機(jī)器上執(zhí)行哪些操作的 YAML 文件,Ansible 把這類文件稱為 “playbook”。

下面我們一起編寫一個(gè)為名 hello.yml 的 playbook。這個(gè) playbook 的作用是把 helloworld 文件發(fā)送到 serviceA 集群。

# hosts 是要部署服務(wù)的集群 - hosts: serviceA # remote_user 是以 root 用戶登錄遠(yuǎn)程機(jī)器remote_user: root # vars 是定義一些變量。這些變量可以在接下來(lái)的 tasks 中使用。vars:src: /Users/yutou/mywork/ansible-playbook # tasks 是在遠(yuǎn)程機(jī)器上具體的執(zhí)行動(dòng)作。tasks:# name 是該動(dòng)作的名稱- name: upload helloworld# copy 是要具體執(zhí)行的動(dòng)作。copy 是 Ansible 模塊,它的作用是把本地文件上傳到目標(biāo)機(jī)器上去。# {{ src }} 是 Jinja2 模板語(yǔ)法,Jinja2 模板語(yǔ)法不懂的話可自行百度。copy: src={{ src }}/helloworld dest=/home

發(fā)布

ansible-playbook hello.yml

Ansible playbook 常用模塊

ansible 很多模塊都可以做到 “見(jiàn)其名,知其意”,很多模塊都是對(duì) Linux 命令的模仿或者封裝,更多模塊可參見(jiàn)官方文檔。下面我們先挑幾個(gè)模塊簡(jiǎn)單介紹一下:

  • synchronize,copy,unarchive 都可以上傳文件。

  • ping:檢查指定節(jié)點(diǎn)機(jī)器是否還能連通。主機(jī)如果在線,則回復(fù)pong。

  • yum, apt:這兩個(gè)模塊都是在遠(yuǎn)程系統(tǒng)上安裝包的。

  • pip:遠(yuǎn)程機(jī)器上 python 安裝包。

  • user,group:用戶管理的。

  • service:管理服務(wù)的,類似于 centos7 上的 service。

template 模塊和在遠(yuǎn)程機(jī)器上執(zhí)行 Linux 命令的模塊是非常重點(diǎn)的模塊,所以接下來(lái)重點(diǎn)介紹一下。

Ansible playbook 常用模塊

配置文件的一個(gè)特點(diǎn)是每個(gè)機(jī)器上的文件都不一樣,都需要一些個(gè)性化配置,比如 A 機(jī)器配置 “hello world”,B 機(jī)器配置 “hello Liming”。這種需求就需要 template 模塊實(shí)現(xiàn)。

template 模塊使用 Jinja2 語(yǔ)法對(duì)模板文件進(jìn)行渲染,然后把渲染后的文件上傳到目標(biāo)機(jī)器。渲染時(shí)用到的變量可以從 3 個(gè)地方讀取到:

  • ansible 內(nèi)置變量;

  • hosts 文件中定義的變量,如上所示;

  • 在 playbook 中 vars 定義的變量。

舉例,模板文件 hello_x,內(nèi)容如下:

hello {{ name }}

hosts 文件配置如下:

[serviceA] 192.168.33.10 name=world 192.168.33.11 name=Liming

在 playbook hello_x.yml 中配置如下:

tasks:- name: upload helloworldtemplate: src={{ src }}/hello_x dest=/home

執(zhí)行 ansible-playbook hello_x.yml 后,192.168.33.10 上 /home/hello_x 文件的內(nèi)容就是 hello world, 192.168.33.11 上則是 hello Liming

在遠(yuǎn)程機(jī)器上執(zhí)行 Linux 命令

raw, command,shell 這三個(gè)模塊都以用來(lái)在遠(yuǎn)程機(jī)器上執(zhí)行 Linux 命令。三種區(qū)別大致區(qū)別如下:

  • 一般情況下使用 command

  • 命令中有特殊字符使用 shell

  • raw 是直接執(zhí)行原始命令,沒(méi)有經(jīng)過(guò)模塊封裝,不建議用。

注意命令的內(nèi)容一般使用 “” 引起來(lái),否則模板渲染的時(shí)候可能報(bào)錯(cuò):

- name: start datanodecommand: "/hadoop-2.7.5/sbin/hadoop-daemon.sh start datanode"

總結(jié)

以上是生活随笔為你收集整理的Ansible 快速入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。