zoukankan      html  css  js  c++  java
  • ansible hosts配置

    1. 编辑/etc/ansible/hosts
    2. 添加本机的public SSH key到目标机器的authorized_keys   #ssh-copy-id
    3. 添加本机的私钥到Ansible
    4. 运行ansible all -m ping 测试是否添加成功
    Inventory 分组
        Ansible可同时操作属于一个组的多台主机,组和主机之间的关系通过inventory文件配置,默认文件路径为/etc/ansible/hosts
     
    常用参数配置:
        ansible_ssh_host                    # 目标主机地址
        ansible_ssh_port                    # 目标主机端口,默认22
        ansible_ssh_user                    # 目标主机用户
        ansible_ssh_pass                    # 目标主机ssh密码
        ansible_sudo_pass                 # sudo密码
        ansible_sudo_exe                    
        ansible_connection               # 与主机的连接类型,比如:local,ssh或者paramiko
        ansible_ssh_private_key_file  # 私钥地址
        ansible_shell_type                 # 目标系统的shell类型
        ansible_python_interpreter   # python版本
     
    格式:[组名] 
        例如 : 
          [test]     # 组名  
          10.0.0.1  # 主机ip  或者10.0.0.1:65522 自定义端口
    别名
        s1 ansible_ssh_port=65522 ansible_ssh_host=10.0.0.1 ansible_ssh_user=simon    # 别名s1
     
    连续的主机
      [g1]
             g[1:50].example.com
              g[a-f].example.com
     
    [all:vars]         # *:vars 块变量,all:vars 全局变量
    ansible_ssh_private_key_file=/root/.ssh/id_rsa
    ansible_ssh_port=22
    ansible_ssh_user=root
    
    [t3:vars]  # t3 使用python解释器是python2
    ansible_python_interpreter=/usr/bin/python2
    nginx_port=80               # 私有变量在playbooks中使用
    
    [t3]
    192.168.11.162
    
    [k8s:children]  # 使用children 定义主机组之间继承关系
    master
    node
    
    [master]
    k8s-master01 ansible_ssh_host=192.168.11.101
    k8s-master01 ansible_ssh_host=192.168.11.102
    
    [node]
    k8s-node01 ansible_ssh_host=192.168.11.105
    k8s-node01 ansible_ssh_host=192.168.11.106
    
    
    
    

     Inventory 分文件管理(文件名即是组名)

      分文件:
              /etc/ansible/group_vars/vim
              /etc/ansible/group_vars/webservers
              /etc/ansible/host_vars/foosball
              vim 文件中的内容: 变量
                  ntp_server: acme.example.org
                  db_server: 10.0.0.1
     
      分文件夹:(文件夹就是组名)
              /etc/ansible/group_vars/vim/install
              /etc/ansible/group_vars/vim/init
              /etc/ansible/host_vars/foosball
     1 #!/usr/bin/env python
     2 # _*_coding:utf-8_*_
     3 
     4 """
     5 @Time :    2019/11/8 15:54
     6 @Author:  Simon
     7 @File: get_ansible_hosts.py
     8 @Software: PyCharm
     9 """
    10 
    11 try:
    12     from ansible.parsing.dataloader import DataLoader
    13     from ansible.inventory.manager import InventoryManager
    14     from ansible.vars.manager import VariableManager
    15 except ImportError as e:
    16     print("请安装ansible模块, 安装方式pip install ansible")
    17 
    18 
    19 def main(sources):
    20     """
    21     # 获取ansible hosts 列表
    22     :param sources:
    23     :return:
    24     """
    25     hosts_list = []
    26     loader = DataLoader()
    27     inventory = InventoryManager(loader=loader, sources=sources)
    28     variable_manager = VariableManager(loader=loader, inventory=inventory)
    29     get_groups_dict = inventory.get_groups_dict()
    30     host_list = inventory.hosts
    31     for _host in host_list:
    32         host = inventory.get_host(hostname=_host)
    33         extra_vars = variable_manager.get_vars(host=host)
    34         extra_vars_group = extra_vars.get("groups")
    35         ans_port = extra_vars.get("ansible_ssh_port") if extra_vars.get("ansible_ssh_port") else extra_vars.get(
    36             "ansible_port")
    37         ans_host = extra_vars.get("ansible_ssh_host") if extra_vars.get("ansible_ssh_host") else extra_vars.get(
    38             "ansible_host")
    39         hosts_list.append({
    40             "hostname": extra_vars.get("inventory_hostname"),
    41             "host": ans_host,
    42             "port": ans_port if ans_port else 22,
    43             "group_name": extra_vars.get("group_names")
    44         })
    45 
    46     return hosts_list
    47 
    48 
    49 if __name__ == "__main__":
    50     sources = ["/etc/ansible/hosts"]
    51     print(main(sources))
    Python 获取host列表
  • 相关阅读:
    《Java练习题》Java习题集四
    《Java基础知识》Java 泛型详解
    《Java基础知识》Java正则表达式
    《Java基础知识》Java IO流详解
    《Java基础知识》Java集合(Map)
    51nod 1191:消灭兔子 贪心+优先队列
    51nod 1430:奇偶游戏 博弈
    51nod 1429:巧克力
    POJ 1423:Big Number 求N的阶乘的长度 斯特林公式
    51nod 1103:N的倍数 抽屉原理
  • 原文地址:https://www.cnblogs.com/lmx1002/p/8339993.html
Copyright © 2011-2022 走看看