• ansible第一章


    1. 构建ansible清单

    1. 清单的作用

    将要管理的一批主机,设置分组,并且在其中还可以加入其他变量

    2.定义清单的方法

    1.普通的定义

    [web]
    web1.example.com
    web2.example.com
    web3.example.com
    192.168.1.1
    192.168.1.2
    192.168.1.3

    2.连续定义

    [web1]
    web[1:3].example.com
    192.168.1.[1:3]

    3.使用内置变量定义

    1.争对主机的变量

    [web2]
    web1.example.com ansible_ssh_host=‘123’
    web2.example.com ansible_ssh_user=‘devops’
    web3.example.com ansible_ssh_port=8089

    2.针对组的变量

    [web3]
    web1.example.com
    web2.example.com
    web3.example.com
    [web3:var]
    ansible_ssh_host=8089

    4.包含子组的定义

    [web1]
    192.168.1.[1:3]
    [web2]
    web[1:3].example.com
    [web_grop:children]
    web1
    web2

    3.验证清单

    1. 清单在默认位置
      ansible host-or-group --list-hosts
    2. 清单在自定义位置
      ansible host-or-group -i inventory --list-hosts

    4.inventory相关的参数(变量)

    参数说明
    ansible_ssh_host将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.
    ansible_ssh_portssh端口号.如果不是默认的端口号,通过此变量设置.
    ansible_ssh_user默认的 ssh 用户名
    ansible_ssh_passssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)
    ansible_sudo_passsudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)
    ansible_sudo_exe (new in version 1.8)sudo 命令路径(适用于1.8及以上版本)
    ansible_connection与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 ‘smart’,‘smart’ 方式会根据是否支持 ControlPersist, 来判断’ssh’ 方式是否可行.
    ansible_ssh_private_key_filessh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.
    ansible_shell_type目标系统的shell类型.默认情况下,命令的执行使用 ‘sh’ 语法,可设置为 ‘csh’ 或 ‘fish’.
    ansible_python_interpreter目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 *BSD, 或者 /usr/bin/python,不是 2.X 版本的 Python.我们不使用 “/usr/bin/env” 机制,因为这要求远程用户的路径设置正确,且要求 “python” 可执行程序名不可为 python以外的名字(实际有可能名为python26).,与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径…

    2.管理ansible配置文件

    名称路径优先级
    全局文件/etc/ansible/ansible.cfg3
    用户个人文件~/.ansible.cfg2
    工作目录配置文件./ansible.cfg1

    1.配置文件中的设置

    基本的配置
    [defaults] 部分设置ansible的默认值
    [privilege-escalation] 配置Ansible如何在受管主机上执行特权
    典型的Ansible配置

    [defaults]
    inventory = ./inventory 
    remote_user = user
    ask_pass = false
    
    [privilege-escalation]
    become = true
    become_mothod = sudo
    become_user = root
    become_ask_pass = false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    常用的指令及其描述
    
    • 1
    指令描述
    inventory指定清单文件的路径
    remote_user要在受管主机上登录的用户的名称。如果没有指定将使用当前用户
    ask_pass提示是否输入SSH密码。如果使用SSh公钥身份验证,则可以让这项为false
    become连接后是否自动在受管主机上切换用户(通常是切换到root)
    become_method如何切换用户(通常是sudo)
    become_ask_pass是否需要为become_false提示输入密码

    3.运行临时命令

    1. 快速执行简单任务时所需的工具
    2. 命令
    ansible host-pattren -m module [-a 'module arguments'] [-i inventory]
    
    • 1

    Ansible 模块 (使用ansible-doc -l 查看安装了哪些模块)

    参数模块
    文件模块 copy:将本地文件复制到受管主机
    file:设置文件的权限和其他属性
    lineinfile:确定特定的行是否在文件中
    synchronize:使用rsync同步内容
    软件包模块 package:使用操作系统本机的自动检软件包管理器管理软件包
    yum:使用yum软件包管理器管理软件包
    apt:使用APT软件包管理器管理软件包
    dnf:使用DNF软件包管理器管理软件包
    gem:管理Ruby gem
    pip:从PyPI管理python软件包
    系统模块 firewalld:使用firewalld管理任意端口和服务
    reboot:重新启动计算机
    serveice:管理服务
    user:添加,删除和管理用户账户
    Net Tools get_url:通过HTTP,HTTPS或FTP下载文件
    nmctl:管理网络
    uri:与WEB服务交互

    ansible命令行选项

    配置文件指令命令行选项
    inventory-i
    remote_user-u
    become–become、-b、-method
    become_metod–become-method
    become_user-become-user
    become_ask_pass–ask-become-pass、-K
  • 相关阅读:
    vue3实现el-table表格单选功能以及默认选中某一行数据
    【C++入门】字符串string类使用
    Java中的内部类
    vs运行localhos转换为本地ip地址访问
    Godfather
    深入理解Java消息中间件-每种解决方案的特点和适用场景
    sonarlint report监测结果分类
    【Go-Lua】Golang嵌入Lua代码——gopher-lua
    【ARFoundation学习笔记】2D图像检测跟踪
    Spring定时任务+webSocket实现定时给指定用户发送消息
  • 原文地址:https://blog.csdn.net/m0_51828898/article/details/126911188