• Ansible在macOS上的安装部署


    一、安装 Ansible(使用 Homebrew)

    1. 安装 Homebrew(如果尚未安装):
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
    • 1
    1. 使用 Homebrew 安装 Ansible:
    brew install ansible
    
    • 1
    1. 安装完成后通过 ansible --version来验证
      在这里插入图片描述

    二、Ansible 配置文件

    Ansible 的主要配置文件是 /etc/ansible/ansible.cfg,但也可以在项目目录中创建一个 ansible.cfg 文件来覆盖默认配置。
    在配置文件中,可以设置各种选项,如 inventory 的位置、SSH 连接参数、行动插件、回调插件等。

    [defaults]
    host_key_checking = False
    inventory = ../../inventory
    log_path = ansible.log
    
    • 1
    • 2
    • 3
    • 4

    三、Ansible的脚本Playbook

    - hosts: localhost 或者 需要远程连接的主机名
      gather_facts: no
      vars:
        ansible_become_pass: "XXX"
      tasks:
      - name: delete folder1
        file:
         name: "想要被删除的文件地址1"
         state: absent
    
      - name: delete folder1
        file:
         name: "想要被删除的文件地址2"
         state: absent
       
    # hosts 指定了要管理和配置的主机组
    # gather_facts 为 no时,Ansible 不会在执行 play 之前自动运行 setup 模块来收集事实。这可以节省时间,尤其是当你管理的节点很多,或者当你知道你不需要使用这些事实时。
    # ansible_become_pass 指定了在执行 command 任务时使用的密码
    # tasks 则包含了一组有序的任务列表,其中包括了安装和启动 Apache 两个任务。
    # state: absent 用于指示 Ansible 应该删除或移除一个对象。这个参数通常与 file、user、group、service 等模块一起使用,这些模块可以管理文件系统、用户、组和服务。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    ansible-playbook的命令

    ansible-playbook playbook.yml
    
    • 1

    执行一次
    在这里插入图片描述
    以上是localhost 执行结果

    四、Ansible 主机清单(Inventory)

    ansible_ssh_host # 要连接的主机名
    ansible_ssh_port # 端口号,默认22
    ansible_ssh_user # ssh连接时默认使用的用户名
    ansible_ssh_pass # ssh连接时的密码
    ansible_sudo_pass # 使用sudo连接用户时的密码
    ansible_ssh_private_key_file # 秘钥文件如果不想使用ssh-agent管理时可以使用此选项
    ansible_shell_type # shell类型,默认sh
    ansible_connection # SSH连接类型:local、ssh、paramiko在ansible 1.2之前默认paramiko
    ansible_python_interpreter # 用来指定Python解释器的路径,同样可以指定ruby、Perl的路径

    在搭建Jenkins的机器的 /etc/hosts 中配置远程主机的IP与Host,这样Inventory中就只需要写Host name。
    在这里插入图片描述

    group_vars 下面的yml 内容:
    ansible_user:
    ansible_connection:
    ansible_port:
    ansible_password:
    ansible_ssh_pass:

    host_vars下面的yml内容:
    ansible_host:

    hosts 内容:
    [group_vars下面的yml name]
    host_vars 下面的yml name

    下面是远程测试示例
    示例test_remote.yaml

    - hosts: MacBookAir
      become: yes
      become_user: root 
      vars:
        ansible_user: MacTest
        ansible_ssh_password: xxx
        ansible_become_password: xxx
      
      tasks:
        - name: Delete the directory
          file:
            path: /Users/mactest/Desktop/folder1
            state: absent
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在远程机器上配置 【允许远程电脑访问您的 Mac】【Setting- General- Sharing- Advanced】
    本机验证是否可以连通远程机器
    在这里插入图片描述

    可以连通,再执行ansible命令ansible-playbook test_remote.yml

    报错"msg": "rmtree failed: [Errno 1] Operation not permitted: '/Users/mactest/Desktop/folder1'"

    提示没权限,因为远程机器上ssh 权限没打开
    进入 System -> Privacy&Security -> Full Disk Access给ssh 权限
    在这里插入图片描述
    再次执行ansible 命令 运行OK
    在这里插入图片描述

  • 相关阅读:
    springboot 集成JWT实现token验证
    深信服C++ 三面(技术面、30min、offer)
    java:内部类
    springcloud_2021.0.3学习笔记:如何通过nacos配置中心读取配置参数
    P1014 [NOIP1999 普及组] Cantor 表
    Element 2 组件源码剖析之布局容器
    Shell中括号的含义
    打造一个极度舒适的Chrome扩展项目开发环境
    基于PHP的篮球宝篮球娱乐网站
    JS数组方法总结
  • 原文地址:https://blog.csdn.net/qq_34495095/article/details/137239494