ansible批量修改服務(wù)器密碼(ansible sudo 需要密碼)
今天給各位分享ansible批量修改服務(wù)器密碼的知識,其中也會對ansible sudo 需要密碼進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
本文目錄一覽:
Ansible安裝配置和基本使用
一、ansible 安裝
ansible 依賴于python2.6或更高的版本、paramiko、PyYAML及Jinja2。
將python頭文件拷貝到標(biāo)準(zhǔn)目錄,以避免編譯ansible時,找不到所需的頭文件
備份舊版本的python,并符號鏈接新版本的python
修改yum腳本,使其指向舊版本的python,已避免其無法運行
1.1 編譯安裝
解決依賴關(guān)系
解壓安裝包
編譯安裝
拷貝配置文件
1.2 rpm包安裝
使用阿里云鏡像源即可,這里為了方便使用,就直接使用yum安裝了。
Fedora 用戶可直接安裝Ansible, 但RHEL或CentOS用戶,需要 配置 EPEL # yum install -y epel-release # yum install -y ansible
注意:不同版本的ansible的功能差異可能較大。
二、配置
配置文件:/etc/ansible/ansible.cfg
hostfile=/etc/ansible/hosts #指定默認(rèn)hosts配置的位置 host_key_checking = False #不進(jìn)行host_key檢查,省去目標(biāo)key發(fā)生變化時輸入(yes/no)的步驟 ask_pass=True # 每次執(zhí)行ansible命令是否詢問ssh密碼 ask_sudo_pass=True # 每次執(zhí)行ansible命令時是否詢問sudo密碼
主機清單:/etc/ansible/hosts
主程序:ansible、ansible paly-book、ansible-doc
1、將要管理的主機納入 /etc/ansible/hosts配置文件中,可以填寫IP或是主機名
[WebServers] 10.10.10.3 10.10.10.4
2、.基于ssh的方式與被管理的主機進(jìn)行通信,在管理的主機上(部署ansible的主機上)生成一對非對稱密鑰,將公鑰發(fā)給被管理的主機。
a,生成密鑰對:ssh-keygen -t rsa
b,將密鑰發(fā)放到要管理的主機:ssh-copy-id -i 10.10.10.3 或 ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.3
3、使用ansible命令測試
[root@wlm yum.repos.d]# ansible all -m ping 10.10.10.4 | SUCCESS = { "changed": false, "ping": "pong" }
三、基本使用
1、常用命令
ansible-doc 命令:獲取模塊列表、模塊使用格式。
ansible-doc -l :獲取列表
ansible-doc -s module_name:獲取指定模塊信息
2、ansible 命令格式
ansible host-pattern [-f forks] [-m module_name] [-a args]
host-pattern 指明管控主機,以模式表示或者直接指定ip,必須事先指定在文件中;all所有
[-f forks] 指明每批管控多少主機,默認(rèn)是5個主機一批次
[-m module_name] 使用何種模塊操作,所有操作都需要通過模塊指定
[-a args] 指明模塊專用參數(shù);args 一般是 key=value格式。注:command模塊的參數(shù)不是kv模式,而是直接給出要執(zhí)行的命令。
注意:host-pattern 默認(rèn)讀取/etc/ansible/hosts,也可以指明自定義文件路徑 -iPATH,--inventory=PATH:指明使用的 host inventory文件路徑;
3、常用模塊介紹
1、command模塊:遠(yuǎn)程主機上運行命令
例:ansible hosts -m command -a "ls /tmp" 注:command模塊也可以省略。
給遠(yuǎn)程主機添加用戶、設(shè)置密碼:
ansible hosts -a 'useradd user1'
ansible hosts -a 'echo abc | passwd --stdin user1'
2、shell模塊:遠(yuǎn)程主機在shell進(jìn)程下運行命令,支持shell特性,也支持管道符。
10.10.10.4 | SUCCESS | rc=0
3、copy模塊:把當(dāng)前主機文件復(fù)制到遠(yuǎn)程主機位置,可以指定mode、own、group
10.10.10.4 | SUCCESS = { "changed": true, "checksum": "325287cee456533bf76025312e5d05e842cb43a9", "dest": "/root/abc.txt", "gid": 0, "group": "root", "md5sum": "1c6d47c6e4d59c630751b47fff140b89", "mode": "0644", "owner": "ansible", "size": 15, "src": "/root/.ansible/tmp/ansible-tmp-1484639082.19-114656107854348/source", "state": "file", "uid": 0 }
4、cron模塊:在遠(yuǎn)程主機指定crontab周期性計劃任務(wù)
minute= hour= day= month= weekday= job= name= (必須填寫) state=
ansible all -m cron -a "minute=*/10 job='/sbin/ntpdate 10.10.10.10 /dev/null' name=synctime" 可使用crontab -l查看
在管理的主機上可以刪除制定的計劃任務(wù)
10.10.10.4 | SUCCESS = { "changed": true, "envs": [], "jobs": [] }
5、fetch模塊:和copy相反,從遠(yuǎn)程主機拷貝文件到本地主機
可以不要flat=yes參數(shù),但作用:
當(dāng)dest=/root/kel/ ,abc.txt會保存在/root/kel/目錄下
當(dāng)dest=/root/kel ,會拷貝abc.txt文件,并命名成kel
6、file模塊:file模塊包含了文件、文件夾、超級鏈接類的創(chuàng)建、拷貝、移動、刪除
path=/etc/foo.conf owner=foo group=foo mode=0644
src=/file/to/link/to dest=/path/ro/symlink owner=foo group=foo state=link
src=/tmp/{{item.path}} dest={{item.dest}} state=link with_items:
path=/etc/foo.conf state=touch mode="u=rw,g=w,o=r"
path=/etc/foo.conf state=touch mode="u+w,g-w,o-rw"
7、yum模塊:用于yum安裝安裝和卸載
8、service模塊:服務(wù)管理
9、user/group模塊:user模塊管理用戶;group模塊管理group
四、Playbook劇本
playbook 是ansible更強大的配置管理組件,實現(xiàn)基于文本文件編排執(zhí)行的多個任務(wù),且多次重復(fù)執(zhí)行。playbook組織格式為使用YAML語言來編寫的。
playbook 是由一個或多個“play”組成的列表。play的主要功能在于將事先歸為一組的主機裝扮成事先通過ansible中的task定義好的角色。從根本上講,所謂的task無非是調(diào)用ansible的一個module。將多個play組織在一個playbook中,即可以讓他們聯(lián)通起來按事先編排的機制生效。
1、例子:
在ansible主機上的root目錄下創(chuàng)建httpd目錄,將本機的httpd.conf文件拷貝到該目錄下,修改配置文件里的監(jiān)聽端口是8081
remote_user:root #root前不能有空格
tasks: #任務(wù)列表
yum name=httpd state=present #yum后的: 刪除掉
copy src=/root/httpd/httpd.conf dest=/etc/httpd/conf
service name=httpd state=started
注意:yaml文件中支持#;下面的操作要跟上面的name對齊。
測試:
ansible-playbook --check playbook :只檢測可能會發(fā)生的改變,但不真正執(zhí)行操作
ansible-playbook playbook :直接執(zhí)行
ansible-playbook --list-hosts :列出運行任務(wù)的主機
2、playbook介紹
設(shè)置在特定條件下觸發(fā):
a,某任務(wù)的狀態(tài)在運行后為changed時,可通過“notify”通知給相應(yīng)的handles;
handles:任務(wù)在特定條件下觸發(fā);接收到其他任務(wù)的通知是被觸發(fā);
b,任務(wù)可以通過“tags”打標(biāo)簽,而后可在ansible-playbook命令上使用-t指定進(jìn)行調(diào)用;
使用Ansible實現(xiàn)自動化運維的一些技巧
最近一年才有機會在生產(chǎn)環(huán)境上使用 Ansible。用的過程中,想把一些小技巧記錄下來,避免自己忘記。如果能幫助到其他同學(xué)就更好了。如果有同學(xué)指出有更好的方法,就更更好了。
通常我們會使用 template module 來生成應(yīng)用的配置,比如生成 Nginx 的配置或者 sudoers 配置。而像 sudoers 文件內(nèi)的配置錯誤可能直接導(dǎo)致無法登錄。所以,我們希望在生成這些配置文件后能校驗一下它的正確性。如果校驗失敗,直接停止,不生成該配置文件。
而 template module 有一個屬性 validate 就是為了實現(xiàn)這一需求的:
校驗 Nginx 配置文件的文件:
校驗 Prometheus 配置文件:
校驗 Logstash 配置文件:
在部署 Zookeeper 時,通常會部署 3 臺組成集群,同時每臺 Zookeeper 都需要在配置一個 myid 的文本文件,而這個文件中只放id。而 id 是要求每臺機器都是不同的。這時 host 變量派上用場了。定義 host 變量有兩種方式:
這種方式筆者認(rèn)為可維護(hù)性更高
不推薦兩種方式都使用,因為變量的作用域問題會把你搞暈
某個 shell 需要一個臨時變量,可以使用 environment 實現(xiàn)
以下方式會生成: a,a,a,a, 注意最后的逗號我們是不需要的:
這時,我們可以這樣:
機器標(biāo)準(zhǔn)化要求每臺機器的ssh連接方式及管理員用戶名及密碼都是一樣的。但是事實中,面對老機器,常常做不過。所以,我們的 Ansible 腳本必須能做到不同的機器可以使用不同的連接方式、管理員用戶名和密碼。利用 host 變量就可以實現(xiàn)了。
舉個例子,當(dāng)前的文件內(nèi)容如下:
常識和技巧之間的界限很模糊??傊M麑ψx者有幫助。
使用ansible一鍵部署MongoDB分片集群
Mongodb 部署信息 :
os: centos7.7 x64 配置好NTP,防火墻默認(rèn)不做任何限制.
mongos部署兩個點,config3個點,和3個分片集群(每個分片一主一副一仲裁)
注意:因為判斷邏輯的問題,不要在任何節(jié)點同時運行兩種服務(wù)的主點
ansible的hosts文件配置:
環(huán)境變量全部都在這里設(shè)置,需要都寫入到ansible的hosts文件里
變量中
server_1_ip 都設(shè)置為主點
server_2_ip 都設(shè)置為副點
server_3_ip 都設(shè)置為仲裁節(jié)點(config server沒有仲裁節(jié)點,但是也要寫,不然mongos的配置文件模板會報錯)
這些IP的配置后面在初始化時會用到.
ansible文件夾結(jié)構(gòu) :
首先是模板文件:
mongod.conf.mongos.j2 mongos的配置文件模板
mongod.conf.normal.j2 shard server和config server的配置文件模板
mongod.service.j2 service文件模板
mongo.key 直接手動生成 ,用戶MongoDB集群之間的加密連接,記得權(quán)限改為600
passwd.j2 用于配置MongoDB的root用戶名密碼
執(zhí)行:
按提示輸入服務(wù)器密碼
包含了系統(tǒng)優(yōu)化相關(guān)設(shè)置,注意中間會重啟一次讓一些系統(tǒng)優(yōu)化項生效
注意:因為判斷邏輯的問題,不要在任何節(jié)點同時運行兩種服務(wù)的主點
執(zhí)行 :
如果執(zhí)行有問題建議多檢查變量配置
全部完成后可以驗證一下集群環(huán)境:
登陸分片集群 :
分片的狀態(tài)顯示正常
登陸mongos
可以看到mongos的狀態(tài)也正常,分片也全部都添加進(jìn)去. 全部安裝至此完成.
一鍵刪除MongoDB安裝及相關(guān)數(shù)據(jù),方便重裝...
一鍵啟動整個MongoDB集群
一鍵停止所有MongoDB集群
以上就是ansible在MongoDB的一鍵部署腳本,而且附帶了對服務(wù)器的優(yōu)化相關(guān)配置
ansible模板等使用方法
==============================================================
ansible 主機信息(可以是組) -m 模塊名稱 -a "完成動作"
舉例:
在ansible中 使用ansible-doc 模塊名稱 來查看單獨模塊用法
常用參數(shù)
官方模塊說明:
參數(shù):chdir--在執(zhí)行命令操作前進(jìn)行切換目錄
參數(shù):creates--判斷一個文件是否存在,如果存在后面的命令就不會執(zhí)行
參數(shù):removes--判斷一個文件是否存在,如果不存在,后續(xù)的命令不會被執(zhí)行
官方模塊說明:
參數(shù)chdir:在執(zhí)行命令前進(jìn)行目錄切換
參數(shù):creates----判斷一個文件是否存在,如果存在,后續(xù)命令不會執(zhí)行
參數(shù):removes--判斷一個文件是否存在,如果不存在則候命的命令不會執(zhí)行
官網(wǎng)模塊說明:
使用這個模塊需要注意的
官方模塊說明:
參數(shù):name--指定安裝軟件的名稱
參數(shù):state--指定軟件安裝或卸載
在這個模塊中卸載使用 removed 安裝使用installed;注意看示例
官網(wǎng)模塊說明:
官網(wǎng)模塊說明:
參數(shù):src--指定管理端源數(shù)據(jù)
參數(shù):dest--分發(fā)到遠(yuǎn)程主機的目標(biāo)路徑下
參數(shù):owner--專屬文件之后修改文件屬主
參數(shù):group--傳輸文件之后修改文件屬組
參數(shù):mode--修改文件的讀、寫、執(zhí)行權(quán)限
參數(shù):backup--在分發(fā)傳輸文件之前,將源文件進(jìn)行備份,按照時間信息進(jìn)行備份
參數(shù)remote_src--no表示從管理端找尋數(shù)據(jù)進(jìn)行分發(fā);yes 默認(rèn)從被管理端找尋數(shù)據(jù)進(jìn)行分發(fā)
參數(shù)content--分發(fā)文件時在文件中穿件簡單信息
官網(wǎng)模塊說明:
參數(shù):src--要拉取的遠(yuǎn)程數(shù)據(jù)
參數(shù):dest--要保存本地的文件路徑
官方說明:
path:指定路徑信息
owner:傳輸文件之后修改文件屬主權(quán)限
group:傳輸文件后修改屬組權(quán)限
mode:直接修改文件讀、寫、執(zhí)行權(quán)限
state:touch(創(chuàng)建文件)、directory(創(chuàng)建目錄)、hard(創(chuàng)建硬鏈接文件) link(創(chuàng)建軟鏈接文件)、absent(刪除數(shù)據(jù))
創(chuàng)建件目錄:
創(chuàng)建文件:
刪除數(shù)據(jù)信息:
官方說明:
參數(shù):src--指定要掛載數(shù)據(jù)
參數(shù):path--指定掛載點
**參數(shù):fstype--指定掛載后,文件系統(tǒng)類型 如:ext3、ext4、xfs、nfs **
參數(shù):state--指定動作 如:mounted(掛載)、present(永久掛載)、umounted(臨時卸載) absent(永久卸載)
掛載:
官方說明:
name: 定義定時任務(wù)注釋信息
參數(shù):minute --表示分鐘信息
參數(shù):hour --表示小時信息
參數(shù):day --表示日期信息
參數(shù):month --表示月份信息
參數(shù):weekday --表示星期信息
參數(shù):job --表示定義任務(wù)信息
參數(shù):state --指定動作 如:present(創(chuàng)建定時任務(wù))、absent(刪除定時任務(wù))
參數(shù):disabled: 讓定時任務(wù)臨時失效
利用ansible編寫時間同步定時任務(wù):每隔5分鐘,進(jìn)行時間同步:
刪除定時任務(wù):
注釋定時任務(wù):
官網(wǎng)說明:
參數(shù):name--指點組名
參數(shù):gid--指定gid
參數(shù):state--指定動作 present(創(chuàng)建) absent(刪除)
官方說明:
參數(shù):name--指定用戶名稱
參數(shù):uid--指定用戶uid信息
參數(shù):group--指定屬組
參數(shù):groups--指定屬于附加組
參數(shù):password—-指定用戶密碼信息(必須密文的信息)
參數(shù):shell—-指定用戶shell信息 /sbin/nologin
參數(shù):create_home--no表示不創(chuàng)建家目錄
創(chuàng)建用戶:
刪除用戶:
**方法一:利用ansible模塊功能
ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}"
mypassword: 指定明文密碼信息
mysecretsalt:加密計算方式(輔助加密)
方法二:利用python模塊功能
使用這種方法需要安裝python-pip
如果安裝不上需要更新pip源,更新方法:
更新pip源:
==============================================================
Linux
ansible批量修改服務(wù)器密碼的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于ansible sudo 需要密碼、ansible批量修改服務(wù)器密碼的信息別忘了在本站進(jìn)行查找喔。
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。