0
点赞
收藏
分享

微信扫一扫

ansible学习笔记03(最佳实践)

1、 控制提权

Ansible playbook 能实现多种不同方式的提权操作,提权的级别取决于你打算控制的级别,ansible使用命令或连接参数,在play、role、block和tasks中,都可以设置提权,设置提权的命令有:become、become_user、become_method和become_flags

1.1 配置提权方式

如果你需要通过become参数进行提权,可以在ansible.cfg文件中设置become=true设置提权

配置文件 命令行 说明
become --become或-b 设置提权
become_method --become-method=提权方式 提权方式
become_user --become-user=用户 提权用户
become_password --ask-become-pass或-K 提权用户密码

1.2 在play中设置提权

可在playbook中每个play通过设置提权参数become:true的方式进行,play提权应该最小提权方式(需要提权再提权)

---
- name: 提权管理
  beceom: true
  tasks:
    - name: 显示用户ID
      debug:
        var: ansible_user_id
        
- name: 不提权管理
    hosts: webservers
    become: false
      debug:
      var: ansible_user_id
# 通过配置文件设置提权
[privilege_escalation]
become=true
become_method=sudo
become_user=root
become_password="XX"
---
- name: 通过配置文件管理
  hosts: webservers
  tasks:
      debug:
      var: ansible_user_id

1.3 在task中提权

可在task中设置提权参数

---
- name: task配置提权
  hosts: all
  become: false
  tasks:
    - name: task提权
      yum:
        name: httpd
        state: present
      become: yes
      
    - name: 查看服务
      shell: "systemctl status httpd"
      become: false

1.4 在Block块中配置提权

可以针对一组逻辑块进行整体的提权操作,相比task,范围更大,可以整体控制become状态

---
- name: Block块中配置提权
  hosts: all
  become: false
  tasks:
    - block:
      - name: task提权
        yum:
          name: httpd
          state: present
        become: yes
      
      - name: 查看服务
        shell: "systemctl status httpd"
    become: yes

1.5 在Role中配置提权

如果role中become没有开启,可以在roles下配置提权选项进行提权

---
- name: 在role中配置提权
  hosts: all
  roles:
    - role: apache
      become: true

1.6 配置提权变量

可以通过在配置文件中设置参数或使用提权变量在设置提权

配置文件 或 playbook选项 连接变量
become ansible_become
become_method ansible_become_method
become_user ansible_become_user
become_password ansible_become_pass

1.6.1 针对主机组

可以通过设置变量的方式对主机组进行批量提权

webservers:
  hosts:
    servera.lab.example.com:
    serverb.lab.example.com:
  vars:
    ansible_become: true

1.6.2 针对单个主机

可以通过设置变量的方式真的单个主机提权

webservers:
  hosts:
    servera.lab.example.com:
    	ansible_become: true
    serverb.lab.example.com:

1.6.3 playbook设置提权变量

可以通过在playbook下通过设置变量进行提权

---
- name: 通过变量进行提权
  hosts: all
  vars:
    ansible_become: true
  tasks:
    - name: 安装WEB服务器
        yum:
          name: httpd
          state: present

1.7 控制提权的一些建议

举报

相关推荐

0 条评论