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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

运维自动化—ansible的使用

發布時間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 运维自动化—ansible的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、ansible的介紹

ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
ansible是基于 paramiko 開發的,并且基于模塊化工作,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。ansible不需要在遠程主機上安裝client/agents,因為它們是基于ssh來和遠程主機通訊的。ansible目前已經已經被紅帽官方收購,是自動化運維工具中大家認可度最高的,并且上手容易,學習簡單。

二、ansible特點

1、部署簡單,只需在主控端部署Ansible環境,被控端無需做任何操作;
2、默認使用SSH協議對設備進行管理;
3、有大量常規運維操作模塊,可實現日常絕大部分操作。
4、配置簡單、功能強大、擴展性強;
5、支持API及自定義模塊,可通過Python輕松擴展;
6、通過Playbooks來定制強大的配置、狀態管理;
7、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
8、提供一個功能強大、操作性強的Web管理界面和REST API接口——AWX平臺。

三、ansible的使用

這里使用3臺主機為例:ansible ,被管理的兩臺主機
1、ansible的安裝
yum install epel-release -y
yum install ansible –y
2、配置ansible的主機清單
vim /etc/ansible/hosts
定義方式
[web] 主機組名:可以自己寫
192.168.191.132 管理的主機1
192.168.191.133 管理的主機2
3、ansible 主機能夠ssh無密連接要管理的主機
配置ansible使用公鑰驗證
雖然ansible支持其他主機認證方式,但是我們最常用的的還是基于秘鑰的認證:
(1)首先生成秘鑰
ssh-keygen -t rsa 后面直接回車
(2)然后向監控主機分發秘鑰:
即將公鑰復制到要監控的主機上?
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.191.132
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.191.133
(3)在ansible上ssh連接測試

四、ansible常用的模塊

1、測試主機的連通性

(1) ansible web -m ping

192.168.191.132 | SUCCESS => { “changed”: false,
“ping”: “pong” }
192.168.191.133 | SUCCESS => { "changed": false,
"ping": "pong" }
可以看出監控的兩臺主機是連通的
(2)ansible all -m ping 測試所有的監控主機

2、command:在遠程主機執行命令;不支持|管道命令

ansible 主機組名 -m command -a "操作"?
(1)ansible web -m comman -a "cat /etc/passwd"
-m 指定模塊 -a 指定命令
將監控的兩臺主機的/etc/passwd 文件內容顯示在ansible主機的屏幕上
(2)ansible web -m comman -a "ifconfig"

3、shell模塊

因為command模塊不支持管道,所以有了shell模塊,支持shell的各種功能
(1)[root@ansiable ~]# ansible web -m shell -a ‘cat /etc/passwd |grep “root”’
192.168.191.132 | SUCCESS | rc=0 >> root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
192.168.191.133 | SUCCESS | rc=0 >> root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

4、copy:復制文件到遠程主機,可以改權限等

copy?
相關選項如下:
①backup:在覆蓋之前,將源文件備份,備份文件包含時間信息。有兩個選項:yes|no
②content:用于替代“src”,可以直接設定指定文件的值
③dest:必選項。要將源文件復制到的遠程主機的絕對路徑,如果源文件是一個目錄,那么該路徑也必須是個目錄
④directory_mode:遞歸設定目錄的權限,默認為系統默認權限
⑤force:如果目標主機包含該文件,但內容不同,如果設置為yes,則強制覆蓋,如果為no,則只有當目標主機的目標位置不存在該文件時,才復制。默認為yes
⑥others:所有的file模塊里的選項都可以在這里使用
⑦src:被復制到遠程主機的本地文件,可以是絕對路徑,也可以是相對路徑。如果路徑是一個目錄,它將遞歸復制。在這種情況下,如果路徑使用“/”來結尾,則只復制目錄里的內容,如果沒有使用“/”來結尾,則包含目錄在內的整個內容全部復制,類似于rsync

(1)ansible web -m copy -a 'src=/root/a.sh dest=/app/a.sh '
源文件是:/root/a.sh,復制到web組監控主機的 /app/a.sh?
(2)ansible web -m copy -a "content='hello word' dest=/app/a.sh mode=644 backup=yes"?
將hello word 內容推送到web主機組監控主機的/app/a.sh ,權限改為644 ,backup:當文件內容發生變化會對原來的內容進行備份。
(3)ansible web -m copy -a "content='hi' dest=/app/a.sh mode=644 backup=yes" 如再次推送內容到啊a.sh 中
在app下用兩個文件
a.sh 內容為最新推送的hi?
a.sh.7560.2017-12-08@19:56:01~ 內容為以前的hello word

5、file 設置文件屬性

(1)ansible web -m file -a "path=/app/app state=directory" 在遠程創建目錄/app/app
(2)ansible web -m file -a "path=/app/app state=absent" 刪除目錄/app/app
(3)state 有下面內容
directory:如果目錄不存在,就創建目錄
file:即使文件不存在,也不會被創建
link:創建軟鏈接
hard:創建硬鏈接
touch:如果文件不存在,則會創建一個新的文件,如果文件或目錄已存在,則更新其最后修改時間
absent:刪除目錄、文件或者取消鏈接文件

6、fetch從遠程某主機獲取文件到本地:

(1)ansible web -m fetch -a 'src=/var/log/messages dest=/root/test'
將遠程主機的 /var/log/messages 拿來放在本機的root下
cd /root/test
ls
192.168.191.132 192.168.191.133?
會自動創建兩個子文件夾區分

7、cron 管理cron計劃任務

cron 選項
day= #日應該運行的工作( 1-31,?,?/2, )
hour= # 小時 ( 0-23,?,?/2, )
minute= #分鐘( 0-59,?,?/2, )
month= # 月( 1-12,?, /2, )
weekday # 周 ( 0-6 for Sunday-Saturday,, )
job= #指明運行的命令是什么
name= #定時任務描述
reboot # 任務在重啟時運行,不建議使用,建議使用special_time
special_time #特殊的時間范圍,參數:reboot(重啟時),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小時)
state #指定狀態,present表示添加定時任務,也是默認設置,absent表示刪除定時任務
user # 以哪個用戶的身份執行
(1)ansible web -m cron -a 'name="sync time from ntpserver" minute="/10" job="/sbin/ntpdate 172.17.0.1 &>/dev/null"?
在遠程主機上每10分鐘同步一下服務器時間
(2)ansible web -m shell -a “crontab -l” 查看遠程主機的文件中是否寫入成功

8、yum安裝軟件

conf_file #設定遠程yum安裝時所依賴的配置文件。如配置文件沒有在默認的位置。
disable_gpg_check #是否禁止GPG checking,只用于present?or?latest。
disablerepo #臨時禁止使用yum庫。 只用于安裝或更新時。
enablerepo #臨時使用的yum庫。只用于安裝或更新時。
name= #所安裝的包的名稱
state= #present安裝, latest安裝最新的, absent 卸載軟件。
update_cache #強制更新yum的緩存。
(1) ansible web -m yum -a 'name=htop state=present disable_gpg_check =yes'
在遠程安裝htop包

9、service: 服務程序管理

arguments #命令行提供額外的參數
enabled #設置開機啟動。
name= #服務名稱
runlevel #開機啟動的級別,一般不用指定。
state #started啟動服務, stopped停止服務, restarted重啟服務, reloaded重載配置

(1)啟動nginx服務并設置范圍自啟動:
[root@ansiable ~]# ansible web -m service -a 'name=nginx state=started enabled=true'

10、user模塊管理

用戶模塊,管理用戶帳號action: user
comment # 用戶的描述信息
createhome # 是否創建家目錄
force # 在使用state=absent是, 行為與userdel –force一致.
group # 指定基本組
groups # 指定附加組,如果指定為(groups=)表示刪除所有組
home # 指定用戶家目錄
move_home # 如果設置為home=時, 試圖將用戶主目錄移動到指定的目錄
name # 指定用戶名
non_unique # 該選項允許改變非唯一的用戶ID值
password # 指定用戶密碼
remove # 在使用state=absent時, 行為是與userdel –remove一致
shell # 指定默認shell
state # 設置帳號狀態,不指定為創建,指定值為absent表示刪除
system # 當創建一個用戶,設置這個用戶是系統用戶。這個設置不能更改現有用戶
uid # 指定用戶的uid
(1)ansible web -m user -a 'name=tom comment="tom is cat" uid=1111 group=tom groups=wheel shell=/bin/zshell home=/home/tomhome'

11、group用戶組模塊

action: group
gid # 設置組的GID號
name= # 管理組的名稱
state # 指定組狀態,默認為創建,設置值為absent為刪除
system # 設置值為yes,表示為創建系統組
(1)創建名為tom的組
[root@Ansible ~]#ansible web -m group -a 'name=tom state=present'

12、script在指定節點運行服務端的腳本

(1)將本地的腳本在其他主機上運行
[root@Ansible ~]#vim test.sh
#/bin/bash
touch /tmp/test.sh.log
#創建/tmp/test.sh.log
echo “hello” >> /tmp/test.sh.log

(2)執行命令
ansible web -m script -a ‘/root/test.sh’
(3)查看web主機組下主機的/tmp/test.sh.log
[root@Ansible ~]#ansible web -m shell -a ‘cat /tmp/test.sh.log’

13、steup模塊

setup模塊,主要用于獲取主機信息,在playbooks里經常會用到的一個參數gatherfacts就與該模塊相關。setup模塊下經常使用的一個參數是filter參數
(1)ansible web -m setup -a "filter='ansible_mb'" 查看主機內存信息
(2)ansible 192.168.191.132 -m setup -a "filter='ansible_eth[0-1]' " 查看地接口為eth0-1的網卡信息
(3)ansible web -m setup -a "filter='mem'* " 查看內存多大

五、Ansible playbook簡介與使用

playbook是ansible用于配置,部署,和管理被控節點的劇本。
通過playbook的詳細描述,執行其中的一系列tasks,可以讓遠端主機達到預期的狀態。playbook就像Ansible控制器給被控節點列出的的一系列to-do-list,而被控節點必須要完成。
也可以這么理解,playbook 字面意思,即劇本,現實中由演員按照劇本表演,在Ansible中,這次由計算機進行表演,由計算機安裝,部署應用,提供對外服務,以及組織計算機處理各種各樣的事情。

1、Playbook的核心元素:

Hosts:主機清單,主機組
Tasks:任務列表
Variables
Templates:包含了模板語法的文本文件;
Handlers:由特定條件觸發的任務;

2、Playbooks配置文件的基礎組件:

Hosts:運行指定任務的目標主機;
remoute_user: 在遠程主機上執行任務的用戶;
sudo_user:
tasks:任務列表

3、例子1:安裝redies,并啟動服務

cd /etc/ansible?
vim web1.yml

- - - - hosts: webremote_user: roottasks:- name: yum install redisyum: name=redis state=latest- name: start serviceservice: name=redis state=started

使用:ansible-playbook web1.yml

4、例子2:安裝,推送文件,啟動服務

cd /etc/ansible?
vim web2.yml

- - - - hosts: webremote_user: roottasks:- name: yum install nginxyum: name=nginx state=latest- name: copy nginx.confcopy: src=/root/nginx.conf dest=/etc/nginx/nginx.confnotify: reloadtags: restartnginx //將新的配置文件推送過去,啟動服務,改變文件,會觸發notify,然后重啟服務- name: start serviceservice: name=nginx state=startedhandlers:- name: restartnginxservice: name=nginx state=reloaded

使用:ansible-playbook web2.yml

5、例子3:定義變量

vim web3.yml

- - - - hosts: webremote_user: roottasks:- name: yum install {{ rpmname }}yum: name={{ rpmname }} state=latest- name: mkdir logcommand: mkdir /usr/share/nginx/logs- name: copy {{ rpmname }}.confcopy: src=/root/{{ rpmname }}.conf dest=/etc/{{ rpmname }}/{{ rpmname }}.confnotify: restarttags: reload{{ rpmname }}- name: start serviceservice: name={{ rpmname }} state=startedhandlers:- name: restartservice: name={{ rpmname }} state=restarted

使用:ansible-playbook web3.yml -e rpmname=nginx

6、例子4:模板

mv /root/nginx.conf /root/nginx.conf.j2 標記成模板
在模板中可以使用變量
ansible web -m setup -a "filter=vcpu" 獲取cpu顆數
(1)vim /root/nginx.conf.j2
worker_processes {{ ansible_processor_vcpus }}; 使用變量
listen {{ listenpport }};

(2)vim web.yml

- - - - hosts: webremote_user: rootvars:- rpmname: nginxlistenport: 8888tasks:- name: yum install {{ rpmname }}yum: name={{ rpmname }} state=latest- name: mkdir logcommand: mkdir /usr/share/nginx/logs- name: copy {{ rpmname }}.conftemplate: src=/root/{{ rpmname }}.conf.j2 dest=/etc/{{ rpmname }}/{{ rpmname }}.confnotify: restarttags: reload{{ rpmname }}- name: start serviceservice: name={{ rpmname }} state=startedhandlers:- name: restartservice: name={{ rpmname }} state=restarted

使用:ansible-playbook web.yml


本文轉自 hawapple 51CTO博客,原文鏈接:http://blog.51cto.com/guanm/2048854


總結

以上是生活随笔為你收集整理的运维自动化—ansible的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩国产一区二区三区 | 观看av在线 | 四虎永久在线精品免费一区二区 | 涩涩小网站 | 综合视频 | 日本a级大片 | 国产一区二区在线电影 | 日韩阿v | 污污软件在线观看 | 日韩在线视频播放 | 91手机视频| 91av麻豆| 日韩三级视频在线 | 国产av电影一区二区 | 精品在线观看一区 | 午夜激情福利在线 | 中文字幕在线观看网 | 五月婷婷丁香花 | a级片免费在线观看 | 免费大片黄在线观看 | 狠狠插视频| 天天综合天天色 | 在线va| 99热这里只有精品在线观看 | 久久久久久免费视频 | 荫道bbwbbb高潮潮喷 | 日本成人一级片 | 日韩在线高清 | 99综合| 少妇久久久久久被弄高潮 | 91久久精品日日躁夜夜躁欧美 | 国产亚洲不卡 | 中国一级特黄真人毛片免费观看 | 老头老太吃奶xb视频 | 国产日韩精品一区二区三区在线 | 久久久亚洲一区二区三区 | 精品国产99久久久久久宅男i | 在线视频天堂 | 欧产日产国产精品98 | 中文国产字幕 | 香蕉影院在线 | 午夜国产一级 | 一级视频免费观看 | 中文字幕一区二区免费 | 97超碰福利 | 亚洲精品久久久久中文字幕二区 | 亚洲精品中文字幕成人片 | 日本a级大片| 蜜桃aaa| www国产视频 | 鲁丝一区二区三区 | 懂色av一区二区夜夜嗨 | japanese中文字幕 | www.日日夜夜 | 国产美女自拍 | 好男人在线观看 | 少妇综合网 | 五月激情六月丁香 | av黄网站 | 亚洲免费高清 | 青青草免费在线 | 黄色操人视频 | 香蕉国产999 | 久久久久成人精品免费播放动漫 | 精品久久久久久久久久久久久久久久久久 | 黄色激情在线观看 | 久久色在线视频 | 久久性精品 | 午夜婷婷网 | 深夜精品视频 | 波多野吉衣伦理片 | www.五月激情| 日少妇av| 国产成人在线视频网站 | 91看片黄 | 亚洲色图日韩 | 亚洲av无码一区二区三区人妖 | 精品一区二区三区中文字幕 | 九七伦理电影 | 日批小视频 | 国产一区二区三区精品愉拍 | 曰本三级日本三级日本三级 | 97成人在线观看 | 国产污视频在线播放 | 日本福利一区二区三区 | 女女互慰吃奶互揉调教捆绑 | 亚洲欧洲久久久 | 人人干在线视频 | 天堂二区 | 在线观看成人一区 | 在线观看视频免费 | 日韩在线电影一区二区 | 日韩av一区二区三区四区 | 日本午夜影视 | 亚洲激情成人 | 夜夜爽网站 | 日韩3p| 97久久久 | av在线不卡播放 |