ansible基础使用简介

执行过程
  1. 加载配置文件,默认/etc/ansible/ansible.cfg
  2. 查找并过滤得到需要执行的主机或组
  3. 加载对应的模块文件
  4. 将模块或命令生成对应的脚本py文件
  5. 将脚本传至远程主机上,加上执行权限
  6. 执行并返回结果
  7. 删除脚本,退出(sleep 0)
程序结构
  • 配置文件目录:/etc/ansible/
  • 执行文件目录:/usr/bin/
  • lib依赖目录:/usr/lib/python/site-packages/ansible/
  • 帮助文档目录:/usr/share/doc/ansible-xx/
  • man文档目录:/usr/share/man/man1/
ansible.cfg读取顺序
  1. 检查环境变量ANSIBLE_CONFIG的路径文件
  2. 检查当前目录下的配置文件
  3. 检查/etc目录下的配置文件
ansible.cfg参数

inventory = /etc/ansible/hosts // 资源清单inventory文件的位置

library = /usr/share/ansible // Ansible模块的目录,支持多个目录方式,用冒号’:'隔开

forks = 5 // 并发连接数,默认为5

sudo_user = root // 默认执行命令的用户

remote_port = 22 // 指定连接被管节点的管理端口,默认为22端口

host_key_checking = False // 是否检查SSH主机的密钥

timeout = 60 // SSH连接的超时时间,单位为秒

log_path = /var/log/ansible.log // 指定存储ansible日志的文件(默认不记录日志)

hosts文件

[group_name] // 组成员可使用通配符

ip_addr / host_name

常用命令
  • ansible 临时命令执行工具
  • ansible-doc 获取模块信息及其使用帮助
  • ansible-galaxy 上传下载代码或roles模块
  • ansible-playbook 定制自动化任务集工具
  • ansible-pull 远程执行命令的工具
  • ansible-vault 文件加密工具
  • ansible-console 基于linux与用户交互的命令执行工具
配置公私钥

ssh-keygen

ssh-copy-id root@xx.xx.xx.xx

// yum install openssh-clientansible -y

常用模块

ansible web -m {module_name} -a {cmd_args} // 命令参数以空格分隔

  • command
    • chdir 执行命令前,切换到指定目录
    • executable 执行shell命令
    • creates 当这个文件不存在,执行之后的命令
    • removes 当这个文件不存在,不执行之后的命令
  • shell
    • 指定shell各种命令
  • copy
    • src 被复制的本地文件或目录
    • content 指定文件的值,替换src
    • dest 目标主机绝对路径
    • backup 当文件内容发生改变后,在覆盖前备份源文件
    • mode 设定权限
    • force 指定是否在已存在目标文件时强制覆盖
  • fetch
    • dest 存放文件的目录
    • src 远程拉取的文件
  • yum
    • name 安装的包名
    • state
      • present 安装
      • latest 安装最新的
      • absent 卸载
    • update_cache 更新yum缓存
    • conf_file 指定安装时所依赖的配置文件
playbook所执行的yml文件
---
- hosts: 
  remote_user: 
  # sudo_user: 
  tasks: 
  	- name: TASK_NAME
  	  module: arguments
  	  notify: HANDLER_NAME
  	  tags: tag1
    - meta: flush_handlers     # 立即执行之前的任务及对应的handler
  handlers:
      - name: HANDLER_NAME
        module: arguments

  

ansible-playbook xx.yml [-t tag_name] // 可指定tag执行对应的任务

变量定义与使用

  • facts // 使用setup模块获取并使用

  • 自定义变量

    • ansible-playbook -e VARS, --extra-vars = VARS
    • 在yml中定义 vars部分
    • 在hosts文件中向不同的组或主机传递不同的变量
  • 条件、迭代与字典

    • tasks:
        - name: 
          template: src=xx.j2
          when: condition
        - name: 
        	yum: name={{item}} state=absent
        	with_items:
        	  - httpd
        	  - php
        - name: 
          user: name={{item.name}} group={{item.group}} state=present
          with_items:
            - {name: '', group: ''}
            - {name: '', group: ''}
      
  • roles使用

    • 将相关配置都放在指定role的文件目录下

      • role/tasks/main.yml
      • role/files/
      • role/templates/
      • role/vars/main.yml
      • role/handlers/main.yml
    • # 同级目录下role_name.yml
      - hosts:
        remote_user: 
        roles: 
          - role
      
    • ansible-playbook -C role_name.yml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值