文章目錄
- ansible系列文章
- 場景
- 環境
- 介紹
- 參數介紹
- 樣例
-
- 官方提供
- 個人樣例
-
- 說明
- 問題
-
- 一、使用`become`好像不生效,一直報`權限不足`的問題或者需要輸入密碼
-
- 1. 啟動腳本設定
- 2. `hosts`檔案裡面的主機清單設定
- 二、使用`sudo echo a >> 權限檔案`會報`權限不足`的問題
-
- 1. 切換到`root`使用者即可解決
- 2. 使用腳本`sudo sh -c 'echo a >> 權限檔案'`
- 總結
- 參考連結
- 随緣求贊
ansible系列文章
ansible學習系列之tags的使用
ansible學習系列之順利啟動背景程式
ansible學習系列之make子產品的使用
ansible學習系列之become的使用
ansible學習系列之lineinfile子產品的使用
場景
近期在編寫微服務的
ansible
部署腳本,有些需要使用
root
權限,是以就使用了
ansible
的
become
功能。
環境
軟體 | 版本 |
---|---|
Ansible | 2.9.4 |
Python | 2.7.5 |
Centos | 7 |
介紹
Ansible
使用現有的以
root
權限或其他使用者的權限的
權限更新系統
來執行任務。由于此功能使您可以“成為(become)”另一個使用者,而該使用者不同于登入計算機的使用者(遠端使用者(
remote_user
)),是以我們将其稱為
become
。
become
關鍵字利用了現有的特權更新工具,例如
sudo
,
su
,
pfexec
,
doas
,
pbrun
,
dzdo
,
ksu
,
runas
,
machinectl
等
參數介紹
您可以設定控制
become
進入
play
或
task
級别的指令。您可以通過設定連接配接變量來覆寫這些變量,而連接配接變量通常在一台主機之間會有所不同。這些變量和指令是獨立的。比如,可以單獨設定
become_user
,而不設定
become
。
參數 | 預設 | 含義 | 是否必需 |
---|---|---|---|
become | 是否進行提權操作。如果需要,設定為 | 是 | |
become_user | root | 設定為具有所需特權的使用者-您想要成為的使用者,而不是您登入時使用的使用者 | 否 |
become_method | sudo | 權限工具,如 , , , , , , , , | 否 |
become_flags | 或 級别上,允許為任務或角色使用特定的标志。一種常見的用法是,當 設定為 時,将使用者更改為 。此指令是在Ansible 2.2中添加。 | 否 |
樣例
官方提供
# 要以非root使用者身份連接配接管理系統服務(需要root特權),可以使用預設值begin_user
- name: Ensure the httpd service is running
service:
name: httpd
state: started
become: yes
# 以apache使用者身份運作指令
- name: Run a command as the apache user
command: somecommand
become: yes
become_user: apache
# 要在shell程式不登入時以nobody使用者身份執行操作
- name: Run a command as nobody
command: somecommand
become: yes
become_method: su
become_user: nobody
become_flags: '-s /bin/sh'
個人樣例
- name: 修改配置檔案-/etc/ld.so.conf
shell: sh -c 'echo -e "\n{{lboso_install_path}}" >> /etc/ld.so.conf'
become: yes
tags:
- micro_install_clean
說明
功能點 | 用途 |
---|---|
become | 使用 或者 的權限 |
tags | 标簽,适合通過标簽實作一個 下面的功能選擇 |
問題
一、使用 become
好像不生效,一直報 權限不足
的問題或者需要輸入密碼
become
權限不足
是因為沒有設定對應的密碼,在這裡有兩種方式可以設定
1. 啟動腳本設定
啟動腳本加入參數
-K
,這個是強制要求輸入密碼,在腳本啟動的時候,就會要求填寫
2. hosts
檔案裡面的主機清單設定
hosts
需要執行
become
的地方,設定
ansible_become_password
參數,如下圖:
[test_server]
10.13.4.[48:51] ansible_ssh_user="test" ansible_ssh_pass='111111' ansible_sudo_pass='111111' ansible_become_password='111111'
二、使用 sudo echo a >> 權限檔案
會報 權限不足
的問題
sudo echo a >> 權限檔案
權限不足
這個是權限問題,可以有兩種方式解決:
1. 切換到 root
使用者即可解決
root
2. 使用腳本 sudo sh -c 'echo a >> 權限檔案'
sudo sh -c 'echo a >> 權限檔案'
總結
ansible
是一門強大的工具,內建了很多不錯的功能子產品。學習這些東西,可以減少我們重複的工作,提高工作效率。實際工作中,是會遇到需要提權的時候,而
become
可以幫忙解決這些問題。
參考連結
user_guide/become
plugins/become/sudo
become.html#become-plugins
随緣求贊
如果我的文章對大家産生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的讨論,可以留言;
如果想繼續檢視我以後的文章,可以左上角點選關注