文章目錄
ansible系列文章
ansible學習系列之tags的使用
ansible學習系列之順利啓動後臺程序
ansible學習系列之make模塊的使用
ansible學習系列之become的使用
場景
近期在編寫微服務的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 | 是否進行提權操作。如果需要,設置爲yes |
是 | |
become_user | root | 設置爲具有所需特權的用戶-您想要成爲的用戶,而不是您登錄時使用的用戶 | 否 |
become_method | sudo | 權限工具,如sudo ,su ,pfexec ,doas ,pbrun ,dzdo ,ksu ,runas ,machinectl |
否 |
become_flags | play 或task 級別上,允許爲任務或角色使用特定的標誌。一種常見的用法是,當shell 設置爲no login 時,將用戶更改爲nobody 。此指令是在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 | 使用root 或者sudoer 的權限 |
tags | 標籤,適合通過標籤實現一個role 下面的功能選擇 |
問題
一、使用become
好像不生效,一直報權限不足
的問題或者需要輸入密碼
是因爲沒有設置對應的密碼,在這裏有兩種方式可以設置
1. 啓動腳本設置
啓動腳本加入參數-K
,這個是強制要求輸入密碼,在腳本啓動的時候,就會要求填寫
2. 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 >> 權限文件
會報權限不足
的問題
這個是權限問題,可以有兩種方式解決:
1. 切換到root
用戶即可解決
2. 使用腳本sudo sh -c 'echo a >> 權限文件'
總結
ansible
是一門強大的工具,集成了很多不錯的功能模塊。學習這些東西,可以減少我們重複的工作,提高工作效率。實際工作中,是會遇到需要提權的時候,而become
可以幫忙解決這些問題。
參考鏈接
user_guide/become
plugins/become/sudo
become.html#become-plugins
隨緣求贊
如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注