自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ansible安裝和基本使用,你學(xué)會(huì)了嗎?

運(yùn)維
由于Ansible不是一個(gè)服務(wù),所以更改完配置后無無需進(jìn)行重啟操作(也沒提供重啟的操作方法),改完配置立即生效。

一、Ansible安裝

Ansible的安裝方法主要有以下三種:

1、yum使用EPEL源安裝

$ mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
$ mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
$ wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
$ yum clean all && yum makecache
# 可以使用以下三種方式查看ansible包的信息
$ yum info ansible
$ yum list ansible
$ yum list | grep ansible
ansible.noarch 2.9.27-1.el7 epel
ansible-collection-microsoft-sql.noarch 1.1.0-1.el8 AppStream
ansible-collection-redhat-rhel_mgmt.noarch 1.0.0-2.el8 AppStream
ansible-doc.noarch 2.9.27-1.el7 epel
ansible-freeipa.noarch 0.3.8-1.el8 AppStream
ansible-freeipa-tests.noarch 0.3.8-1.el8 AppStream
ansible-inventory-grapher.noarch 2.4.4-1.el7 epel
ansible-lint.noarch 3.5.1-1.el7 epel
ansible-openstack-modules.noarch 0-20140902git79d751a.el7 epel
ansible-pcp.noarch 2.2.1-1.el8 AppStream
ansible-python3.noarch 2.9.27-1.el7 epel
ansible-review.noarch 0.13.4-1.el7 epel
ansible-test.noarch 2.9.27-1.el7 epel
centos-release-ansible-29.noarch 1-2.el8 extras
kubernetes-ansible.noarch 0.6.0-0.1.gitd65ebd5.el7 epel
python2-ansible-runner.noarch 1.0.1-1.el7 epel
python2-ansible-tower-cli.noarch 3.3.9-1.el7 epel
vim-ansible.noarch 3.2-1.el7
# 安裝ansible
$ yum -y install ansible
$ ansible --version

2、編譯安裝

$ yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
# 需要提前安裝Python環(huán)境()
$ wget https://releases.ansible.com/ansible/ansible-2.9.27.tar.gz
$ tar xf ansible-2.9.27.tar.gz
$ cd ansible-2.9.27
$ ls -al
total 160
drwxr-xr-x 2 root root 4096 May 25 05:18 bin
drwxr-xr-x 2 root root 4096 May 25 05:18 changelogs
drwxr-xr-x 3 root root 4096 May 25 05:18 contrib
-rw-r--r-- 1 root root 35148 May 25 05:18 COPYING
drwxr-xr-x 6 root root 4096 May 25 05:18 docs
drwxr-xr-x 3 root root 4096 May 25 05:18 examples
drwxr-xr-x 3 root root 4096 May 25 05:18 hacking
drwxr-xr-x 3 root root 4096 May 25 05:18 lib
drwxr-xr-x 2 root root 4096 May 25 05:18 licenses
-rw-r--r-- 1 root root 13840 May 25 05:18 Makefile
-rw-r--r-- 1 root root 1731 May 25 05:18 MANIFEST.in
drwxr-xr-x 10 root root 4096 May 25 05:18 packaging
-rw-r--r-- 1 root root 7724 May 25 05:18 PKG-INFO
-rw-r--r-- 1 root root 5175 May 25 05:18 README.rst
-rw-r--r-- 1 root root 351 May 25 05:18 requirements.txt
-rw-r--r-- 1 root root 12949 May 25 05:18 setup.py
-rw-r--r-- 1 root root 28352 May 25 05:18 SYMLINK_CACHE.json
drwxr-xr-x 7 root root 4096 May 25 05:18 test
$ python setup.py build
$ python setup.py install
$ mkdir /etc/ansible
$ cp -r examples/* /etc/ansible

3、Git 源碼安裝

$ git clone https://github.com/ansible/ansible.git
$ cd ansible
$ git checkout stable-2.9
Updating files: 100% (19674/19674), done.
Branch 'stable-2.9' set up to track remote branch 'stable-2.9' from 'origin'.
Switched to a new branch 'stable-2.9'
$ source ./hacking/env-setup

4、pip安裝

$ yum install python-pip python-devel
$ yum install gcc glibc-devel zibl-devel rpm-bulid openss1-devel
$ pip install -U pip
$ pip install ansible --upgrade

二、Ansible相關(guān)文件說明

1、配置文件

  • /etc/ansible/ansible.cfg :主配置文件,配置ansible工作特性;
  • /etc/ansible/hosts :主機(jī)清單文件,管理的目標(biāo)主機(jī)地址清單;
  • /etc/ansible/roles/ :存放角色的目錄。

2、主配置文件介紹

[defaults]
#inventory = /etc/ansible/hosts # 主機(jī)列表配置文件
#library =/usr/share/my_modules/ # 庫文件存放目錄
#remote_tmp = $HOME/.ansible/tmp # 臨時(shí)py命令文件存放在遠(yuǎn)程主機(jī)目錄
#local_tmp = $HOME/.ansible/tmp # 本機(jī)的臨時(shí)命令執(zhí)行目錄
#forks = 5 # 默認(rèn)并發(fā)數(shù)
#sudo_user = root # 默認(rèn)sudo用戶
#ask_sudo_pass = True # 每次執(zhí)行ansible命令是否詢間ssh密碼
#ask_pass = True # 是否詢問密碼
#remote_port = 22 # 默認(rèn)的遠(yuǎn)程登錄端口
host_key_checking = False # 檢查對(duì)應(yīng)服務(wù)器的host_key,建議取消注釋
log_path=/var/log/ansible.log # 日志文件,建議啟用
#module_name = command # 默認(rèn)模塊,可以修改為shell模塊

以上只是一小部分關(guān)于default的相關(guān)配置,還有其他更多的配置這里暫時(shí)不一一列舉。因?yàn)閍nsible的大部分參數(shù)都可以保持默認(rèn),無需更改。但是當(dāng)你的被管理機(jī)器數(shù)量增加以后,建議將forks數(shù)量適當(dāng)?shù)恼{(diào)整。

溫馨提示:由于Ansible不是一個(gè)服務(wù),所以更改完配置后無無需進(jìn)行重啟操作(也沒提供重啟的操作方法),改完配置立即生效。

3、Inventory主機(jī)清單文件

主機(jī)清單文件,用大白話講其實(shí)就是被整合在一個(gè)文件中的一組或者多組被管控的節(jié)點(diǎn)。默認(rèn)情況下,該清單文件為:/etc/ansible/hosts,通常我們可能會(huì)根據(jù)項(xiàng)目需求,起一個(gè)見名知意的其他名稱,或者也會(huì)直接在每一套我們需要組織的項(xiàng)目根目錄下存放一個(gè)hosts的清單文件。

Inventory主機(jī)清單文件可以有多個(gè),在使用plyabook時(shí)可以手動(dòng)通過-i 參數(shù)指定你需要使用的清單文件名稱。

Inventory文件遵循了ini配置文件的風(fēng)格,一個(gè)section就表示一組隸屬于同一個(gè)分組的被管理機(jī)器。目標(biāo)被管理節(jié)點(diǎn)默認(rèn)均被視為使用SSH的22端口,但是當(dāng)部分節(jié)點(diǎn)使用非22端口號(hào)時(shí),也可以在清單文件中進(jìn)行指定。

被管理節(jié)點(diǎn)可以是以IP的形式寫在清單文件中,也可以使用域名的形式。

[sites]
172.16.0.10
172.16.0.11
[appsrvs]
192.168.66.[1:30]
[nginx]
nginx1.ayunw.cn
nginx2.ayunw.cn
[apache]
apache1.ayunw.cn:2333
apache2.ayunw.cn
[nginxsrvs]
nginx[10:20].ayunw.cn
[dbservers]
redis1.ayunw.cn
redis2.ayunw.cn
[dbsrvs]
mysql-[a:z].ayunw.cn

三、實(shí)戰(zhàn)演練

1、環(huán)境介紹

我這里包括ansible主控機(jī)和另外兩個(gè)被管理機(jī)器。

[root@ansible-server ~]# cat /etc/ansible/hosts
[webservers]
192.168.66.[151:153]
[dbservers]
192.168.66.151
[appservers]
192.168.66.[152:153]

2、Ansible相關(guān)命令工具

  • /usr/bin/ansible 。
  • /usr/bin/ansible-doc :查看配置文檔,模塊功能查看工具。
  • /us/bin/ansible-galaxy:下載/上傳優(yōu)秀代碼或Roles模塊的自網(wǎng)平臺(tái)。
  • /usr/bin/ansible-playbook:定制自動(dòng)化任務(wù),編排劇本工具。
  • /usr/bin/ansible-pull:遠(yuǎn)程執(zhí)行命令的工具。
  • /usr/bin/ansible-vault:文件加密工具。
  • /usr/bin/ansible-console:基于Console界面與用戶交互的執(zhí)行工具。

以上命令,最常用的兩個(gè):ansible和ansible-playbook,這兩個(gè)命令就是ansible用來實(shí)現(xiàn)批量管里的關(guān)鍵。

  • ansible命令通常用于一次性或者臨時(shí)的任務(wù),一般一條命令即可實(shí)現(xiàn)任務(wù)。通常我們稱這種方式為:ad-hoc;
  • ansible-playbook主要是應(yīng)用于針對(duì)大型項(xiàng)目的部署,需要通過多個(gè)yaml格式的文件(以yaml或者yml結(jié)尾)組合使用,所以一般需要進(jìn)行提前規(guī)劃目錄,整合yaml文件。

接下來介紹幾個(gè)比較常用的命令。

(1)ansible-doc

該命令主要用于顯示針對(duì)某個(gè)模塊的使用方法的幫助信息。如果忘記了模塊或者模塊的用法,可以通過該命令快速查看。

ansible-doc [options][module...]
# 列出可用模塊
-l,--list
# 顯示指定模塊的playbook片段
-s,--snippet
如:
# 列出所有模塊
ansible-doc -l
# 查看指定模塊幫助用法
ansible-doc copy
# 查看指定模塊幫助用法[簡(jiǎn)化版的幫助]
ansible-doc -s copy

注意: 在使用ansible批量管理操作之前,需要先對(duì)所有主機(jī)做一個(gè)免密認(rèn)證,以確保每個(gè)被管理節(jié)點(diǎn)都能在ansible管理節(jié)點(diǎn)上通過ssh協(xié)議免密登錄到被管理節(jié)點(diǎn)。

免密的三種實(shí)現(xiàn)方式:

  • 基于ssh-keygen + shell + sshpass`方法實(shí)現(xiàn)
  • 基于expect實(shí)現(xiàn);
  • 基于ansible-playbook實(shí)現(xiàn)。

ad-hoc 方式常用參數(shù)說明:

  • --version 
  • -m module 
  • -V 
  • --list-hosts 
  • -k,--ask-pass 
  • -C,--check 
  • -T,--timeout=TIMEOUT 
  • -u,--user=REMOTE_USER :執(zhí)行遠(yuǎn)程執(zhí)行的用戶
  • -b,--become 
  • --become-user=USERNAME :指定sudo的runas用戶,默認(rèn)為root
  • -K,--ask-become-pass 

通配符

ansible "*"-m ping 
ansible 192.168.1.* -m ping
ansible "srvs" -m ping
[root@ansible-server ~]# ansible "*" --list-hosts
hosts (3):
192.168.66.151
192.168.66.152
192.168.66.153

邏輯或

ansible "websrvs:appsrvs" -m ping 
ansible "192.168.66.151:192.168.66.152" -m ping

邏輯與

# 在websrvs組并且在dbsrvs組中的主機(jī)
ansible "webservers:&dbservers" -m ping
192.168.66.151 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}

邏輯非

# 在websrvs組,但不在dbsrvs組中的主機(jī)
# 注意:此處為單引號(hào)
ansible 'webservers:!dbservers' -m ping

正則

ansible "webservers:&dbservers" -m ping
ansible "~(web|db)servers" -m ping

(2)ansible執(zhí)行命令過程

  • 加載自己的配置文件默認(rèn)/etc/ansible/ansible.cfg,如果指定了你自定義的清單文件,則從自己的清單文件中查找被管理主機(jī).
  • 加載自己對(duì)應(yīng)的模塊文件,如:command。
  • 通過ansible將模塊或命令生成對(duì)應(yīng)的臨時(shí)py文件,并將該文件傳輸至遠(yuǎn)程服務(wù)器的對(duì)應(yīng)執(zhí)行用戶$HOME/.ansible/tmp/ansible-tmp-數(shù)字/XXX.PY文件。
  • 給文件+x執(zhí)行。
  • 執(zhí)行并返回結(jié)果。
  • 刪除臨時(shí)py文件,退出。

可以通過加參數(shù) -v 或者 -vvv列出詳細(xì)的執(zhí)行過程(可以多加幾個(gè)v參數(shù))。

[root@ansible-server ~]# ansible "~(web|db)servers" -vvv -m ping > ansible.log
[root@ansible-server ~]# grep "chmod" ansible.log

(3)ansible執(zhí)行后顏色描述

默認(rèn)情況下是以下三種顏色:

  • 綠色:表示成功。
  • 黃色:修改了遠(yuǎn)程文件后并執(zhí)行成功。
  • 紅色:表示執(zhí)行失敗。

但是在ansible配置文件中可以定義顏色,如下:

[root@ansible-server ~]# vim /etc/ansible/ansible.cfg
[colors]
#highlight = white
#verbose = blue
#warn = bright purple
#error = red
#debug = dark gray
#deprecate = purple
#skip = cyan
#unreachable = red
#ok = green
#changed = yellow
#diff_add = green
#diff_remove = red
#diff_lines = cyan

(4)Ansible-playbook示例

[root@ansible-server ~]# cat echo-demo.yml
---
- hosts: all
remote_user: root
tasks:
- name: echo demo
command: echo "第一個(gè) ansible-playbook 示例"

[root@ansible-server ~]# ansible-playbook echo-demo.yml

(5)ansible-vault

該工具用于對(duì)yaml文件進(jìn)行加解密,格式如下:

ansible-vault [create|decrypt|edit|encrypt|rekey|view]

如:
ansible-vault encrypt echo-demo.yml # 加密
ansible-vault view echo-demo.yml # 查看
ansible-vault decrypt echo-demo.yml # 解密
ansible-vault edit echo-demo.yml # 編輯加密文件
ansible-vault create echo-demo.yml # 創(chuàng)建新文件

ansible是一個(gè)簡(jiǎn)單高效且很強(qiáng)大的工具,它的功能遠(yuǎn)不止于此。而那些不常用的命令工具,本文也暫不介紹。

責(zé)任編輯:姜華 來源: 運(yùn)維開發(fā)故事
相關(guān)推薦

2024-02-02 11:03:11

React數(shù)據(jù)Ref

2023-03-28 07:36:01

SQL數(shù)據(jù)庫管理

2023-06-02 08:04:38

對(duì)象存儲(chǔ)數(shù)據(jù)

2023-10-30 07:05:31

2023-12-27 07:31:45

json產(chǎn)品場(chǎng)景

2024-01-18 09:38:00

Java注解JDK5

2024-04-28 08:24:27

分布式架構(gòu)Istio

2023-07-10 08:36:21

工具pptword

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺(tái)工具

2024-01-19 08:25:38

死鎖Java通信

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2022-11-08 08:45:30

Prettier代碼格式化工具

2024-08-19 10:24:14

2024-05-22 08:03:15

2023-06-15 08:00:23

2024-11-08 08:56:01

2024-05-06 00:00:00

InnoDBView隔離
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)