ansible學習系列之become的使用

ansible系列文章

ansible學習系列之tags的使用
ansible學習系列之順利啓動後臺程序
ansible學習系列之make模塊的使用
ansible學習系列之become的使用

場景

近期在編寫微服務的ansible部署腳本,有些需要使用root權限,所以就使用了ansiblebecome功能。

環境

軟件 版本
Ansible 2.9.4
Python 2.7.5
Centos 7

介紹

Ansible使用現有的以root權限或其他用戶的權限的權限升級系統來執行任務。由於此功能使您可以“成爲(become)”另一個用戶,而該用戶不同於登錄計算機的用戶(遠程用戶(remote_user)),因此我們將其稱爲becomebecome關鍵字利用了現有的特權升級工具,例如sudosupfexecdoaspbrundzdoksurunasmachinectl

參數介紹

您可以設置控制become進入playtask級別的指令。您可以通過設置連接變量來覆蓋這些變量,而連接變量通常在一臺主機之間會有所不同。這些變量和指令是獨立的。比如,可以單獨設置become_user,而不設置become

參數 默認 含義 是否必需
become 是否進行提權操作。如果需要,設置爲yes
become_user root 設置爲具有所需特權的用戶-您想要成爲的用戶,而不是您登錄時使用的用戶
become_method sudo 權限工具,如sudosupfexecdoaspbrundzdoksurunasmachinectl
become_flags playtask級別上,允許爲任務或角色使用特定的標誌。一種常見的用法是,當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

隨緣求贊

如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章