ansible 批量按用户名创建kerberos主体,并分发到远程主机

可以批量生产票据并分发目标主机

TypeScript 复制代码
- name: Configure Kerberos for Hadoop Users
  hosts: hadoop_servers
  become: no
  gather_facts: no
  vars:
    kerberos_server: hadoop01.xuexi.com
    keytab_dir: /home/hadoop/hxy
    keytab_local_dir: ./keytabs
    principals:
      - hxy
      - stars

  tasks:

    - name: Ensure key directory exists
      ansible.builtin.file:
        path: "{
  
  { keytab_dir }}"
        state: directory
        mode: '0755'

    - name: Create Kerberos principals and generate keytab files
      block:
        - name: Create a Kerberos principal
          ansible.builtin.command: >
            kadmin.local -q "addprinc -randkey {
  
  { item }}/{
  
  { inventory_hostname }}@XUEXI.COM"
          register: addprinc_results
          delegate_to: "{
  
  { kerberos_server }}"
          ignore_errors: yes
          loop: "{
  
  { principals }}"

        - name: Set facts for successfully created principals
          set_fact:
            created_principals: "{
  
  { created_principals | default([]) + [item.item] }}"
          when: item.rc == 0
          loop: "{
  
  { addprinc_results.results }}"

        - name: Report failed principal creation attempts
          ansible.builtin.debug:
            msg: "Failed to create principal for {
  
  { item.item }}/{
  
  { inventory_hostname }}@XUEXI.ICOM: {
  
  { item.stderr }}"
          when: "'Principal already exists' not in item.stderr and item.rc != 0"
          loop: "{
  
  { addprinc_results.results }}"

        - name: Generate keytab file for each principal
          ansible.builtin.command: >
            kadmin.local -q "xst -k {
  
  { keytab_dir }}/{
  
  { item }}-{
  
  { inventory_hostname }}.keytab -norandkey {
  
  { item }}/{
  
  { inventory_hostname }}@XUEXI.COM"
          register: xst_results
          delegate_to: "{
  
  { kerberos_server }}"
          loop: "{
  
  { created_principals }}"

        - name: Fetch the keytab files to the control machine
          ansible.builtin.fetch:
            src: "{
  
  { keytab_dir }}/{
  
  { item }}-{
  
  { inventory_hostname }}.keytab"
            dest: "{
  
  { keytab_local_dir }}/{
  
  { item }}-{
  
  { inventory_hostname }}.keytab"
            flat: yes
          delegate_to: "{
  
  { kerberos_server }}"
          when: item is defined and (lookup('file', keytab_dir + '/' + item + '-' + inventory_hostname + '.keytab') is not none)
          loop: "{
  
  { created_principals }}"

    - name: Distribute keytab files to each target host
      ansible.builtin.copy:
        src: "{
  
  { keytab_local_dir }}/{
  
  { item }}-{
  
  { inventory_hostname }}.keytab"
        dest: "/data1/tmp/{
  
  { item }}-{
  
  { inventory_hostname }}.keytab"
      when: item is defined and (lookup('file', keytab_local_dir + '/' + item + '-' + inventory_hostname + '.keytab') is not none)
      loop: "{
  
  { created_principals }}"
      delegate_to: "{
  
  { inventory_hostname }}"

    - name: Clean up keytab files on Kerberos server
      ansible.builtin.file:
        path: "{
  
  { keytab_dir }}/{
  
  { item }}-{
  
  { inventory_hostname }}.keytab"
        state: absent
      when: item is defined
      delegate_to: "{
  
  { kerberos_server }}"
      loop: "{
  
  { created_principals }}"

    - name: Clean up local keytab files on control machine
      ansible.builtin.file:
        path: "{
  
  { keytab_local_dir }}/{
  
  { item }}-{
  
  { inventory_hostname }}.keytab"
        state: absent
      when: item is defined
      loop: "{
  
  { created_principals }}"
      run_once: yes
相关推荐
诗词在线1 小时前
求推荐飞花令
大数据·人工智能·python
湘美书院--湘美谈教育1 小时前
湘美谈教育AI系列经验集锦:赋能整理聊斋志异大寓言
大数据·人工智能·深度学习·神经网络·机器学习
jrjrgood1 小时前
现货黄金和黄金期货的区别有哪些?如何投资?
大数据·人工智能·区块链
清辞8532 小时前
Coze从入门到实战---第一、二章
大数据·人工智能·学习·语言模型
TomatoStudy3 小时前
IT职业教育AI落地与实训体系建设复盘——以职坐标模式为例
大数据·人工智能
mN9B2uk173 小时前
大数据量高并发的数据库优化
服务器·数据库·oracle
Java 码思客3 小时前
【ElasticSearch从入门到架构师】第1章:ElasticSearch 核心认知与行业定位
大数据·elasticsearch·搜索引擎
土星云SaturnCloud3 小时前
边缘计算赋能智慧工地:从“看得见“到“管得住“的智能化升级
服务器·人工智能·ai·边缘计算
cui17875684 小时前
物业费收缴困局的破题之路:2026年社区商业逻辑的底层重构
大数据·数据库·人工智能
2501_933670794 小时前
大数据在校实训项目一般做什么类型内容
大数据