當前熱訊:ansible學習系列之become的使用

2022-12-08 11:18:22 來源:51CTO博客

一、場景

近期在編寫微服務的??ansible???部署腳本,有些需要使用??root???權限,所以就使用了??ansible???的??become功能。本篇博客主要講述關于 ??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??下面的功能選擇

六、問題

6.1、使用??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"

6.2、使用??sudo echo a >> 權限文件???會報??權限不足??的問題

這個是權限問題,可以有兩種方式解決:

1. 切換到??root??用戶即可解決

2. 使用腳本??sudo sh -c "echo a >> 權限文件"??

七、總結

??ansible???是一門強大的工具,集成了很多不錯的功能模塊。學習這些東西,可以減少我們重復的工作,提高工作效率。實際工作中,是會遇到需要提權的時候,而??become??可以幫忙解決這些問題。

八、參考鏈接

??user_guide/become??

?????plugins/become/sudo????????

??become.html#become-plugins??

隨緣求贊

如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;如果有好的討論,可以留言;

如果想繼續查看我以后的文章,可以點擊關注可以掃描以下二維碼,關注我的公眾號:楓夜之求索閣,查看我最新的分享!

標簽: 權限文件 輸入密碼 提高工作效率

上一篇:全球視點!MYSQL-INNODB索引構成詳解
下一篇:觀點:EMQX 多版本發布、新增自定義函數功能