天天看點

ansible學習系列之become的使用ansible系列文章場景環境介紹參數介紹樣例問題總結參考連結随緣求贊

文章目錄

  • 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 是否進行提權操作。如果需要,設定為

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

可以幫忙解決這些問題。

ansible學習系列之become的使用ansible系列文章場景環境介紹參數介紹樣例問題總結參考連結随緣求贊

參考連結

user_guide/become

plugins/become/sudo

become.html#become-plugins

随緣求贊

如果我的文章對大家産生了幫忙,可以在文章底部點個贊或者收藏;

如果有好的讨論,可以留言;

如果想繼續檢視我以後的文章,可以左上角點選關注

ansible學習系列之become的使用ansible系列文章場景環境介紹參數介紹樣例問題總結參考連結随緣求贊

繼續閱讀