91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ansible的基礎使用和快速入門

發布時間:2020-06-04 23:45:48 來源:網絡 閱讀:291 作者:wx5c1cfd6e22842 欄目:系統運維

Ansible其實一個it運維自動化工具,主要是完成it基礎設施的配置應用的部署,可以對百十臺的主機,上千臺的主機進行管理,它一直強調的是:
簡單易用,所以我們就能很快的上手它,所以不需要好的基礎能力

簡單-----減少學習的成本:它使用易讀的描述語言部署的文件。
無需特殊編碼技能:也就是它不需求你會開發,你就能很快的上手使用。
任務按順序執行:ansible執行就是按你的任務從上到下依次去執行,所以很好去理解,很好的去寫這個配置文件。

強大-----協調應用程序生命周期,因為一個應用程序的生命周期分為多個階段,例如從代碼的拉取到構建,然后再到部署,然后再到測試,一個應用的周期大概是這樣的,ansible可以在這個應用周期中完成一系列任務
應用部署
配置管理
工作流程編排
我們可以通過剛才的那幾個階段去寫配置文件,這樣就能很清晰的看出這個應用程序到底要做哪些事,根據我們做那些事,我們再逐一的去分解
這也就是ansible的主要的功能

無代理----可預測,可靠和安全

無代理架構,也就是在一臺服務器上安裝ansible就可以了,而不需要在客戶端再安裝一個agent,
使用openssh通信,確保了安全性,
沒有代理維護成本

Ansible相對比同類的saltstack他們都是使用python去編寫的,在早些年saltstack市場占有率是遠超ansible,而近幾年市場占有率是遠超saltstack的,其實主要的原因呢,就是跟它這個設計模式有關系,因為ansible最初呢講究的就是無代理架構,而saltstack要在被管理端,要裝一個agent,裝一個很簡單,要考慮后期的維護,所以根據現在的市場需求,很多情況下,在某些機器上安裝一些復雜的agent和其他的一些工具,對于現在的企業it環境中,每個服務器上面都安裝了很多的agent,有可能自己研發了被監控端的agent,日志的agent,回頭再安裝一些其他的agent,要初始化要舒適化四五個agent,久而久之就會增加很多額外的負載,而且不易于我們后期對服務器的管理,所以根據這個現狀呢,ansible就用的it企業很多,而且ansible在它本身的這個配置下就是這么設計的,而且根據這種形態去擴展更多模塊和功能,而saltstack,雖然已經支持了這種無代理架構,但是它是后來支持的,有很多功能的還是難于ansible去使用的。

Ansible的架構
Ansible的基礎使用和快速入門![]

Users就是我們這個管理員用戶,也就是我們,我們去批量管理主機,有兩種方式,一個是執行命令,例如查看磁盤空間
第二種方式呢,就是playbook去管理比較復雜的任務,例如一個應用的部署

這個ansible引擎有4部分,第一個就是inventory,這個就是管理我們主機的一個清單,你去管理誰,就是在這體現的,包括主機的ip地址,端口,賬戶密碼都是在這個inventory去輸寫的
第二個就是ansible的Api,它有api來供我們去調用,當我們去開發運維自動化平臺的時候,不用去造輪子,就可以直接使用ansible的api去使用來完成你的批量管理。

第三個就是模塊modules,ansible是一個自動化引擎,它很多的功能呢都是通過模塊去實現的,例如去創建一個用戶,那么它就有這個user這個賬戶,那么去管理一個服務,去啟動一個服務那么久有這個service,強調之初呢就是它有非常多的模塊。

第四個就是plugins,這個就是插件,這個相當于ansible來完成內部的一些操作,例如ansible怎么去管理這些主機,那么它就有這個contation的一個插件,通過這個插件呢去連接你這個主機,所以這個plugins是ansible的核心功能,而模塊是ansible核心之外的擴展功能。

而ploybook可以通過這些模塊去編寫應用的生命周期,它就相當于一個文本,我們要在里面輸寫我們要做哪些事
如果要實現一個CMDB的一個功能,配置中心管理數據庫,這個功能呢就記錄了你的it基礎設施中,一些主機的一些信息,通過這些信息呢,以供其他人去使用,供其他的項目去調用,有了ansible的話就能很快去獲取這些信息,因為ansible可以在你的目標主機上去獲取當前主機所有的一些硬件資源了,一些配置,各個信息都會幫你收集,只需要將你的數據收集到你的CMDB當中就可以了
而且ansible也有很多的模塊和插件來對接這個云平臺,不管是私有云還是公有云都會幫我們去做一些事,,這個就是一個ansible的一個架構

管理員通過操作ansible,ansible去調用一些模塊和插件來讀取,inventory的配置主機清單,去操作你操作的主機組。

Ansible的安裝
我們可以直接通過yum去安裝
[root@ansible ~]# yum -y install ansible
安裝之后就是配置ansible,這里就是配置ansible的主機清單,這里可以使用把密碼寫上去,也可以提前做好免交互登錄,就直接寫ip也可以

[root@ansible ~]# vim /etc/ansible/hosts
[webservers]
10.4.7.12 ansible_ssh_user=root ansible_ssh_pass=666666
10.4.7.21 ansible_ssh_user=root ansible_ssh_pass=666666

對我們執行的命令添加不需要指紋的交互

[root@ansible ~]# vim /etc/ansible/ansible.cfg
host_key_checking = False

查看我們多主機節點的磁盤狀態

[root@ansible ~]# ansible webservers -a "df -h"
10.4.7.12 | SUCCESS | rc=0 >>
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  1.4G   49G   3% /
devtmpfs                 858M     0  858M   0% /dev
tmpfs                    870M     0  870M   0% /dev/shm
tmpfs                    870M  8.4M  861M   1% /run
tmpfs                    870M     0  870M   0% /sys/fs/cgroup
/dev/sda2               1014M  179M  836M  18% /boot
/dev/sda1                200M   12M  189M   6% /boot/efi
/dev/mapper/centos-home   73G   33M   72G   1% /data
tmpfs                    174M     0  174M   0% /run/user/0

10.4.7.21 | SUCCESS | rc=0 >>
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  1.4G   49G   3% /
devtmpfs                 3.8G     0  3.8G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G  8.4M  3.8G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda2               1014M  179M  836M  18% /boot
/dev/sda1                200M   12M  189M   6% /boot/efi
/dev/mapper/centos-home   73G   33M   72G   1% /data
tmpfs                    779M     0  779M   0% /run/user/0

Ansible的使用要求
服務端的要求
Python2.6/2.7/3.x
Redhat,Debian,centos,os x等,不支持windows
因為ansible是python寫的所以要有python的環境,ansible是在15年的10月份被redhat收購的,默認centos已經將python安裝了
被管理端要求
Openssh,linux發行版一般也使用openssh,也需要python,會使用python的腳本,執行我們使用的模塊,最終封裝我們使用的腳本,在被管理端執行,結果返回給ansible
Python2.6/2.7/3.x

安裝ansible的方式支持yum,也是推薦的方式,像redhat核debian都支持他們本身的軟件包去安裝ansible
也可以通過pip去安裝,其實ansible也是python的一個模塊
也可以通過源碼包去安裝
? https://releases.ansible.com/ansible or https://github.com/ansible/ansible.git

ansible的配置文件

[root@ansible ~]# vim /etc/ansible/ansible.cfg
some basic default values...

#inventory      = /etc/ansible/hosts
#library        = /usr/share/my_modules/
#module_utils   = /usr/share/my_module_utils/
#remote_tmp     = ~/.ansible/tmp
#local_tmp      = ~/.ansible/tmp
#forks          = 5
#poll_interval  = 15
#sudo_user      = root
#ask_sudo_pass = True
#ask_pass      = True
#transport      = smart
#remote_port    = 22
#module_lang    = C
#module_set_locale = False

有這幾個重要的簡單說一下,inventory -/etc/ansible/hosts
這是被管理端的主機清單
Fork是ansible工作進程的并發數,它默認是5個,可以根據自己管理主機的數量調整這個,同時提高這個并發數也會對你的服務器的負載增加消耗

Sudo_user:就是提權,在linux下如果你是普通用戶,如果想root方式去執行操作時,那你是不是需要sudo,或者su -切到root用戶操作,那這就稱為提權。

Remote_port=22,操作目標主機的端口,ssh 默認22,這里也默認22

Host_key_checking=false 這個開啟的話就會實現我們第一次登錄一個主機時,可以免去敲yes/no,但是開啟這個也有不好的,就是當我們的服務端重裝系統了,那么這個地方就會失效報錯,當然也可以解決,把know_hosts下的歷史登錄記錄清除就可以,不過這個也不影響使用。
Log_path=/var/log/ansible.log 就是記錄日志的,記錄一些基本操作,可以開啟一下
Private_key_file=/root/.ssh/id_rsa,這是指定密鑰認證的私鑰,連接linux的認證方式就是基于密碼的認證,一個是基于密鑰對的認證,基于密鑰對的認證是相對于比較安全的,進行數字證書的效驗,基于ssh的容易被破解,但是滿足密碼的復雜性也很難破解。

inventory主機清單
[root@ansible ~]# vim /etc/ansible/hosts
像ansible在操作我們基礎設施主機的時候,都是通過這個/etc/ansible/hosts去操作的
這個配置中有屬于這種未分組的組,它會分配到auto的組中,也就是默認組,我們可以根據IP,或者主機名進行配置,

Ex 1: Ungrouped hosts, specify before any group headers.

green.example.com
blue.example.com
192.168.100.1
192.168.100.10

Ansible的執行命令的使用方法
[root@ansible ~]# ansible --help
Usage: ansible <host-pattern> [options]
主機的模式->選項,就是在你的主機清單中匹配
這個all就是匹配你所有的主機組,不加主機組也會匹配上
-m command可以省略,這是默認的

[root@ansible ~]# ansible all  -a "free -m"
10.4.7.12 | SUCCESS | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:           1738         121        1475           8         141        1456
Swap:          3839           0        3839

10.4.7.21 | SUCCESS | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:           7785         162        7479           8         143        7403
Swap:          3839           0        3839

10.4.7.22 | SUCCESS | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:           7785         159        7482           8         144        7406
Swap:             0           0           0

也可以使用直接輸入ip同樣也可以查看到

[root@ansible ~]# ansible 10.4.7.12 -a "df -h"
10.4.7.12 | SUCCESS | rc=0 >>
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  1.4G   49G   3% /
devtmpfs                 858M     0  858M   0% /dev
tmpfs                    870M     0  870M   0% /dev/shm
tmpfs                    870M  8.4M  861M   1% /run
tmpfs                    870M     0  870M   0% /sys/fs/cgroup
/dev/sda2               1014M  179M  836M  18% /boot
/dev/sda1                200M   12M  189M   6% /boot/efi
/dev/mapper/centos-home   73G   33M   72G   1% /data
tmpfs                    174M     0  174M   0% /run/user/0

然后就是變量,能與用戶動態的交互,傳參,來讓ansible來做指定的事情,這樣就能更靈活一些。

Ansible的官方文檔是docs.ansible.com
一般經常用的ansible和ploybook,doc
其他的模塊也很多,暫時也用不上
比如變量的使用

[webservers]
10.4.7.21 ansible_ssh_user=root ansible_ssh_pass=666666 http_port=80
10.4.7.22 ansible_ssh_user=root ansible_ssh_pass=666666 http_port=80
[root@ansible ~]# ansible webservers -a "echo {{http_port}}"
10.4.7.22 | SUCCESS | rc=0 >>
80

10.4.7.21 | SUCCESS | rc=0 >>
80

組變量的使用,定義這個vars,使用的時候就會調用這個變量

[webservers:vars]
http_port=8080
server_name=www.devops.com
[root@ansible ~]# ansible webservers -a "echo {{http_port}}"
10.4.7.21 | SUCCESS | rc=0 >>
8080

10.4.7.22 | SUCCESS | rc=0 >>
8080

[root@ansible ~]# ansible webservers -a "echo {{server_name}}"
10.4.7.22 | SUCCESS | rc=0 >>
www.devops.com

10.4.7.21 | SUCCESS | rc=0 >>
www.devops.com

也可以單獨寫到/etc/ansible/group_vars/webservers.yml下,它默認會讀取你哪個組里面的變量,以yml的模式更方便
http_port: 8090
server_name: xiabanle


[root@ansible group_vars]# ansible webservers -a "echo {{http_port}}"
10.4.7.22 | SUCCESS | rc=0 >>
8090

10.4.7.21 | SUCCESS | rc=0 >>
8090

[root@ansible group_vars]# ansible webservers -a "echo {{server_name}}"
10.4.7.22 | SUCCESS | rc=0 >>
xiabanle

10.4.7.21 | SUCCESS | rc=0 >>
xiabanle

ad-hoc命令

  1. 命令工具常用選項
  2. Ssh密碼認證
  3. Ssh 密鑰對認證
    前面所使用的就是我們使用的ad-hoc命令的方式執行一個命令來使用我們的ansible
    這種的特點就是能夠快速的執行某個操作,ad-hoc就是我們經常用的批量管理,而ploybook就是我們一個應用的編排

使用shell模塊在主機組批量創建文件

[root@ansible ~]# ansible webservers -m shell -a "mkdir /opt/devops"
 [WARNING]: Consider using file module with state=directory rather than running mkdir

10.4.7.21 | SUCCESS | rc=0 >>
10.4.7.22 | SUCCESS | rc=0 >>

[root@ansible ~]# ansible webservers -m shell -a "ls /opt/"
10.4.7.22 | SUCCESS | rc=0 >>
devops
test
10.4.7.21 | SUCCESS | rc=0 >>
devops
test

查看本次的操作設計到了哪些主機

[root@ansible ~]# ansible webservers --list-hosts
  hosts (2):
    10.4.7.21
10.4.7.22

查看輸出的命令遇到的詳細信息
[root@ansible ~]# ansible webservers -vvv -a "ls /opt/devops"

Ssh密鑰對的認證
先創建一對密鑰對
[root@ansible ~]# ssh-keygen
這個rsa.pub是公鑰,這個放在目標主機上,這個id_rsa是使用這個私鑰進行登錄認證的

[root@ansible .ssh]# ls
id_rsa  id_rsa.pub  known_hosts

怎么放過去,有兩種方式,第一種查看公鑰的內容,將它復制到目標主機認證key中
還有一種方式就是通過ssh-copy-id,這樣的話,就能直接傳到目標主機的authorized_keys中
[root@ansible .ssh]# ssh-copy-id root@10.4.7.21
這個就是保存你ansible主機上的公鑰

[root@aaa ~]# cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRgvupMdkSCz2tP1WOig7h736iqHdFMWVdMoYnmgpe8EUp/Xmuwf66dVv/RrDvs6jyPtlnlQtBVtEYJCwsuumgLXcSp+XwyICLe5cetYGYRa3ByhIiJPxrfkLCnLGHAHKl0dBnxN2286Rsg1D1NgRLFGVS+MF1Hj6CPgHhLc+eTusDv4tZXCFGdJoyT99jJCAwpc1N/pbJhoS/t4g+fxZ7nCrRkLS49i8Mo7KuLjtfwlB4yDbh2bzdG60rzF71k8asJlBj3GcSmtEhqmw7xyv2qcqCq/CvpscUhJ4ZIrz4xs6Jq2IKBhgQiptCnDis15b6Cj6R3mY3XLf4sruX/hyh root@ansible

這樣就能實現免交互登錄了
這樣的話,hosts文件只需要將IP或者域名寫上就可以了

Ansible的常用模塊
執行shell命令(command和shell)
文件傳輸(copy和file)可以對文件拷貝和創建目錄
管理軟件包(yum)
用戶和組(user)
從源代碼管理系統部署(git)從git倉庫拉取源代碼
管理服務(service)
收集目標主機信息(setup)

Copy模塊將文件拷貝過去

[root@ansible ~]# ansible webservers -m copy -a "src=/root/Dockerfile dest=/tmp"
查看目標已有
[root@ansible ~]# ansible webservers -a "ls /tmp"

File模塊在管理端去創建文件
創建目錄state=directory
創建文件state=touch
刪除目錄/文件state=absent
[root@ansible ~]# ansible webservers -m file -a "dest=/tmp/xiaoming state=file"

Yum模塊在被管理端安裝yum的包
Yum命令state=present
卸載命令 State=absent
[root@ansible ~]# ansible webservers -m yum -a "name=vim state=present"

User模塊,創建用戶
[root@ansible ~]# ansible webservers -m user -a "name=foo password=66666"
刪除用戶 :state=absent

Service模塊我們啟動一個服務停止一個服務,
測試一個memcache來測試服務的啟動和停止
啟動state=started
停止state=stopped
開機啟動enabled=true
重啟state=restarted

啟動

[root@ansible ~]# ansible webservers -m yum -a "name=memcached state=present"
[root@ansible ~]# ansible webservers -m service -a "name=memcached "
[root@ansible ~]# ansible webservers -m shell -a "ps -ef |grep memcached"

停止
[root@ansible ~]# ansible webservers -m service -a "name=memcached state=stopped"
給memcached加入開機啟動
[root@ansible ~]# ansible webservers -m service -a "name=memcached enabled=true"
重啟就是restarted

Set up模塊是收集系統信息的
這個也會寫一些變量,當我們使用ploybook時當前的主機變量
[root@ansible ~]# ansible webservers -m setup
可以過濾其中的一些信息來過濾一些我們想要的系統信息,比如獲得主機名

[root@ansible ~]# ansible webservers -m setup -a "filter=ansible_hostname"
10.4.7.21 | SUCCESS => {
    "ansible_facts": {
        "ansible_hostname": "k8s-node1"
    }, 
    "changed": false
}
10.4.7.12 | SUCCESS => {
    "ansible_facts": {
        "ansible_hostname": "k8s-master"
    }, 
    "changed": false
}
10.4.7.22 | SUCCESS => {
    "ansible_facts": {
        "ansible_hostname": "k8s-node2"
    }, 
    "changed": false
}

查看內存使用情況
[root@ansible ~]# ansible webservers -m setup -a "filter=ansible_*_mb"

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡阳市| 南投市| 平果县| 平舆县| 会泽县| 仪陇县| 井陉县| 安远县| 武平县| 曲麻莱县| 连江县| 米易县| 柳州市| 新龙县| 申扎县| 贵阳市| 美姑县| 新竹县| 呈贡县| 新津县| 荥阳市| 阳谷县| 河南省| 临桂县| 明星| 井陉县| 榆中县| 和顺县| 廊坊市| 喀什市| 宣化县| 襄城县| 华安县| 万山特区| 临安市| 安乡县| 双桥区| 宜君县| 松江区| 将乐县| 汾阳市|