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

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

生活随笔

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

编程问答

ansible部署

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

ansible的特性:基于Python語(yǔ)言實(shí)現(xiàn),由paramiko,PyYAML和jinjia2三個(gè)關(guān)鍵模塊 部署簡(jiǎn)單,agentless
?默認(rèn)使用ssh協(xié)議
?? ??? ?(1) 基于秘鑰認(rèn)證方式
?? ??? ?(2)在inventory文件中配置賬號(hào)密碼
主從模式:
?? ??? ?master:ansible,ssh client
?? ??? ?slave:ssh server

支持自定義模塊:支持各種編程語(yǔ)言
支持Playbook
基于“模塊”完成各種“任務(wù)”

首先,安裝ansible,在管理端和被管理端配置秘鑰信息;

/etc/ansible/hosts文件下,配置被管理端的組信息。

yum list all *ansible* yum info ansible yum install ansible -y rpm -ql ansible

安裝依賴于epel源
配置文件:/etc/ansible/ansible.cfg
invertory:/etc/ansible/hosts

ls /etc/ansible? ?
ansible.cfg hosts roles

ansible.cfg 是 Ansible 工具的配置文件;
hosts 用來(lái)配置被管理的機(jī)器;
roles 是一個(gè)目錄,playbook 將使用它
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1、Ansible 管理機(jī)與被管理機(jī)做秘鑰認(rèn)證
ssh-keygen??????? # 生成秘鑰
ssh-copy-id -i /root/.ssh/id_rsa.pub "-p 22 root@ip地址"???? # 將公鑰寫入被管理機(jī)
ssh root@ip地址 'ntpdate 另一個(gè)ip地址'? ??? ??? ??? ?#同步時(shí)間和另一個(gè)服務(wù)器時(shí)間相同。
2、hosts 文件添加被管理機(jī)
vim /etc/ansible/hosts

[Client] 192.168.163.2 192.168.163.3 [webservers] 192.168.163.2 [dbservers] 192.168.163.3

如何查看模塊幫助;

man ansible-doc ansible-doc -l 查看ansible支持的所有的模塊。 ansible-doc -s MODULE_NAME 查看某些模塊如何使用的。 ansible-doc -s yum 查看yum如何使用 ansible-doc -s command

ansible命令應(yīng)用基礎(chǔ):
語(yǔ)法:ansible <host-pattern> [-f forks] [-m module_name] [-a args]
host-pattern:對(duì)哪些主機(jī)生效。
-f forks:一批處理多少主機(jī),啟動(dòng)的并發(fā)線程數(shù)。
-m module_name:要使用的模塊。
-a args:模塊特有的參數(shù)。

一.常見(jiàn)模塊:
ansible-doc -s MODULE_NAME

1) command:命令模塊,默認(rèn)模塊,用于遠(yuǎn)程執(zhí)行命令
ansible all -a 'data'
ansible 192.168.133.2 -m command -a 'data'?? ?#出現(xiàn)success表示成功。
192.168.12.129 | SUCCESS |rc=0 >>
TUE JUN 23 16:56:41 CST 2018

ansible webservers -m command -a 'data'
ansible all -m command -a 'data'
ansible 192.168.133.2 -m command -a 'tail -2 /etc/passwd'

2)cron模塊

cron:
?? ?state:
?? ??? ?present:安裝
?? ??? ?absent:移除

ansible-doc -s cron:查看如何使用參數(shù),該參數(shù)-a后面添加(minute,job,name皆為參數(shù)的內(nèi)容。)
比如在webservers集群中寫個(gè)定時(shí)計(jì)劃任務(wù):每隔10分鐘輸出hello

ansible webservers -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job"'?? ??? ?
ansible webservers -a 'crontab -l'? 查看同步任務(wù)列表
ansible webservers -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state=absent'
移除同步任務(wù)。默認(rèn)沒(méi)有state是安裝。

3)user用戶模塊
name=:指明創(chuàng)建用戶的名字。
ansible-doc -s user
ansible all -m user -a 'name="user"'
ansible all -m user -a 'name="user" state=absent'

4)group模塊
ansible-doc -s group
ansible webservers -m group -a 'name=mysql gid=306 system=yes'
ansible webservers -m user -a 'name=mysql uid=306 system=yes group=mysql'

5)copy文件模塊
src=:定義本地源文件路徑
dest=:定義遠(yuǎn)程目標(biāo)文件路徑
content:取代src=,表示直接用此處生成的信息生成為目標(biāo)文件的內(nèi)容。
ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible ower=root mode=640'
ansible all -m copy -a 'connect="Hello Ansible\nHi Mageedu" dest=/tmp/test.ansible'? \n是轉(zhuǎn)譯。

6)file:設(shè)定文件屬性
path=:指定文件路徑,可以使用name或dest來(lái)替換

創(chuàng)建文件符號(hào)鏈接:
?? ?src=:指明源文件
?? ?path=:指明符號(hào)鏈接文件路徑

ansible all -m file -a 'ower=mysql group=mysql mode=644 path=/tmp/fstab.ansible' 創(chuàng)建文件鏈接: ansible all -m file -a 'path=/tmp/fstab.link src=/tmp/fastab.ansible state=link'

7)ping:測(cè)試主機(jī)是否能連接
ansible -a 'ping'

8)service:指定運(yùn)行狀態(tài)
enabled=:是否開(kāi)機(jī)自動(dòng)啟動(dòng),取值為true或者false
name=:服務(wù)名稱
state=:狀態(tài),取值為started,stopped,restarted

ansible-doc -s service ansible webservers -a 'service httpd status' ansible webservers -a 'chkconfig --list httpd' ansible webservers -m service -a 'enabled=true name=httpd state=started'

9)shell:在遠(yuǎn)程主機(jī)上運(yùn)行命令
尤其是用到管道等功能的復(fù)雜命令時(shí)候。
ansible all -m user -a 'name=user1'
ansible all -m command -a 'echo passwd |passwd --stdin user1'
在遠(yuǎn)程主機(jī)上查看發(fā)現(xiàn)密碼沒(méi)改變,是因?yàn)樗J(rèn)可能認(rèn)為是本機(jī)的命令
ansible all -m shell -a 'echo passwd |passwd --stdin user1'

10)script:本地腳本命令復(fù)制到遠(yuǎn)程并且運(yùn)行之。該shell腳本只支持相對(duì)路徑

cat test.sh #!/bin/bash echo "hello ansible" > /tmp/script.ansible useradd user2 cp -r /tmp/test.sh ./ 該shell腳本只支持相對(duì)路徑 vim /tmp/test.sh chmod +x /tmp/test.sh ansible all -m script -a 'test.sh'

11)yum:安裝程序包
name=:指明要安裝的程序包,可以帶上版本號(hào)
state=:present,lastest表示安裝,absent表示卸載
ansible all -m yum -a 'name=zsh'
ansible all -m yum -a 'name=zsh state=absent'

12)setup:收集遠(yuǎn)程主機(jī)的facts
每個(gè)被管理的節(jié)點(diǎn)在接受并運(yùn)行管理命令之前,會(huì)將自己的主機(jī)相關(guān)信息,如操作系統(tǒng),ip地址等報(bào)告給遠(yuǎn)程的ansible主機(jī)。
ansible 192.168.133.4 -m setup?? ?
nginx配置文件中有個(gè)work_processes=物理核心數(shù)(processor_core * processor_count)-1或者-2

13)get_url 模塊(實(shí)現(xiàn)在遠(yuǎn)程主機(jī)下載指定 URL 到本地,支持 sha256sum 文件校驗(yàn))
ansible Client -m get_utl -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"

14) stat 模塊(獲取遠(yuǎn)程文件狀態(tài)信息,atime/ctime/mtime/md5/uid/gid 等信息)
ansible Client -m stat -a "path=/etc/syctl.conf"

15) mount 模塊(遠(yuǎn)程主機(jī)分區(qū)掛載)
ansible Client -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext4 opts=ro state=present"

綜合
ansible-doc -s 模塊名

command
?? ?-a 'COMMAND'
user
?? ?-a 'name= state={present|absent}' system= uid= '
group
?? ?-a 'name= gid= state= system='
cron
?? ?-a 'name= minute= hour= day= mounth= weekday= job= user= state='
copy
?? ?-a 'dest= src= mode= owner= group= '
file
?? ?-a 'path= mode= owner= group= state={directory|link|present|absent} src='
ping
?? ?無(wú)參數(shù)
yum
?? ?-a 'name= state={present|lastest|absent}'
service
?? ?-a 'name- state={started|stopped|restarted} enabled='
shell
?? ?-a 'COMMAND'
script
?? ?-a '/path/to/script'
setup

轉(zhuǎn)載于:https://www.cnblogs.com/fengzhongzhuzu/p/9129732.html

總結(jié)

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

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