ansible

[kubernetes:children]
master
minion

#master组 
[master]
100.100.111.108 ansible_ssh_pass='ASx@7NCL' ansible_port=22 kuberole=[minion,master]

#minion组 
[minion]
100.100.111.108 ansible_ssh_pass='ASx@7NCL' ansible_port=22 kuberole=[minion,master]
10.21.59.55 ansible_ssh_pass='2yxSf_DA' ansible_port=22 kuberole=[minion]

#参数
[kubernetes:vars]
data_dir=/data
---
- name: one example
  remote_user: root
  hosts: kubernetes
  tasks:
  #shell,debug,register
  #将shell命令执行的输出保存在disk_status变量里面
  - name: Query the disk_status
    shell: fdisk -l
    register: disk_status
   
  #打印出disk_status变量的属性值
  - name: Print disk
    debug: var=' disk_status.stdout '

  #stat,register
  #将查询到的文件信息保存在dir_exist里面
  - name: Query file
    stat: path={{ data_dir }}
    register: dir_exist

  #如果dir_exist记录的文件不存在则创建一个{{ data_dir }}相应的目录
  - name: Create the data directory
    shell: mkdir -p {{ data_dir }}
    when: not dir_exist.stat.exists

 

例子:

使用ansible脚本清理none镜像的一个demo。

inventory:

[node]
47.98.218.146 ansible_ssh_pass='asasasas' ansible_port=22
47.98.218.147 ansible_ssh_pass='asasasas' ansible_port=22
47.98.218.148 ansible_ssh_pass='asasasas' ansible_port=22
47.98.218.149 ansible_ssh_pass='asasasas' ansible_port=22
47.98.218.150 ansible_ssh_pass='asasasas' ansible_port=22

clear_image.yaml

---
- name: clear none images
  remote_user: root
  hosts: node
  tasks:
  - name: Query none images
    shell: docker images -f "dangling=true" -q
    register: docker_images

  - name: Print none images
    debug: var=' docker_images.stdout '

  - name: Delete none image
    shell: docker rmi $(docker images -f "dangling=true" -q)
ansible-playbook -i inventory image-clear.yaml

用ansible可读性可维护性可扩展性增强了很多。

 

  • 创建Roles
    创建roles时一般需要以下步骤:首先创建以roles命名的目录。然后在roles目标下分别创建以个角色名称命令的目录,如websevers等,在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录。最后在Playbook文件中调用各角色进行使用

  • roles内各目录含义解释

files:用来存放由copy模块或script模块调用的文件。
templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
tasks:此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
handlers:此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
vars:此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
defaults:此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
meta:此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。

  • 案例:使用roles安装LAMP架构
  • 1:创建httpd、mysql、php角色名称目录,并在其目录下创建files、handlers、tasks、templates、meta、defaults和vars目录

    # mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
    # mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
    # mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
    
    # touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
    # touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
    # touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
  • 编写httpd模块
  • 安装httpd服务
  • 修改httpd.conf配置文件

    # vim /etc/ansible/roles/httpd/tasks/main.yml
        - name: ensure apache is at the latest version 
          yum: pkg={{ servicenames}} state=latest
          template: src=/etc/ansible/templates/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
        - name: restart httpd server
          service: name=httpd enabled=true state=restarted
  • 定义变量

    # vim /etc/ansible/roles/httpd/vars/main.yml
    # servicenames: httpd

 

 

### 关于 Ansible 的下载安装与使用教程 #### 一、Ansible 基础概念 Ansible 是一种简单而强大的 IT 自动化工具,用于配置管理、应用程序部署以及任务编排。它的设计原则是基于无代理架构(Agentless),即不需要在被控节点上安装任何软件。 - **Inventory 文件**: 这是一个包含受控服务器信息的文件,默认路径位于 `/etc/ansible/hosts`[^1]。该文件定义了主机列表及其分组方式。 #### 二、Ansible 的安装方法 以下是 Ansible 在 Linux 和 macOS 上的标准安装步骤: 对于 Ubuntu 系统: ```bash sudo apt update sudo apt install software-properties-common sudo add-apt-repository --yes --update ppa:ansible/ansible sudo apt install ansible ``` 对于 CentOS/RHEL 系统: ```bash sudo yum install epel-release sudo yum install ansible ``` macOS 用户可以借助 Homebrew 工具完成安装: ```bash brew install ansible ``` 验证安装成功与否可以通过以下命令检查版本号: ```bash ansible --version ``` #### 三、Ansible 的基本用法 ##### 1. 执行 Ad-Hoc 命令 Ad-Hoc 模式允许用户快速向远程主机发送单条指令并获取反馈。例如,查看目标主机上的 `~` 目录结构时可执行如下命令[^2]: ```bash ansible webserver -i ~/.ansible/hosts -m command -a 'ls ~' -k ``` 其中 `-k` 参数表示提示输入 SSH 密码而非依赖密钥认证。 ##### 2. 配置 Inventory 文件 默认情况下,Ansible 使用 `/etc/ansible/hosts` 作为 inventory 文件位置。如果需要指定自定义路径,则可通过 `-i` 参数实现。例如: ```ini [webserver] 192.168.1.10 ansible_user=root ``` ##### 3. Playbooks 编写入门 Playbook 是一组 YAML 格式的剧本脚本,用来描述一系列复杂操作序列。下面是一份最简化的 playbook 示例[^4]: ```yaml --- - name: Update all servers and reboot them hosts: webservers become: yes tasks: - name: Ensure system is up to date package: name: "*" state: latest - name: Reboot server after updates are installed reboot: ``` #### 四、跨平台支持——Windows 环境下的 Ansible 应用 尽管传统意义上 Ansible 更倾向于 Unix/Linux 平台的操作,但它同样具备良好的 Windows 支持能力。这主要得益于由社区开发者 jborean93 维护的一套专门针对 Microsoft 技术栈优化过的插件集合[^3]。这些组件让运维人员得以利用 PowerShell 脚本或者 WinRM 协议无缝衔接至企业内部混合云场景之中。 #### 五、容器集成解决方案-Ansible Bender 随着 DevOps 文化日益普及,越来越多的企业开始关注 CI/CD 流程中的镜像构建环节。为此官方推荐了一款名为 "Ansible Bender" 的第三方扩展程序[^5]。它允许使用者仅需编写一份声明性的 YAML 描述文档就能全自动完成 Dockerfile 替代工作流的设计思路。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值