ansible系统复习学习笔记-从零到无

作者:神秘网友 发布时间:2021-01-25 15:37:24

ansible系统复习学习笔记-从零到无

--时间:2021年1月25

--作者:飞翔的小胖猪

前言

该文档仅作为作者复习ansible使用,对格式和流程没有做过多的编排和概述。不喜勿喷。

基础

ansible控制主机是基于python中的Paramiko模板(Paramiko是python对ssh的实现) ,ansible服务端要求系统为linux操作系统,python版本在python 2.6以上。

相关网址

ansible官方网址:ansible.com

galaxy网站:https://galaxy.ansible.com/

执行原理

1.ansible本质是通过python调用的Paramiko模块来执行命令的。

2.服务控制端的命令会由ansible在服务端生成python文件,保存在本地$HOME/.ansible/tmp中。

3.复制控制端生成的python文件到被控告主机端的$HOME/.ansible/tmp中。

4.被控主机调用python程序执行脚本。

5.被控端删除之前传过来的python文件。

注:如果在ansible命令执行过程中使用Ctrl+C或kill命令直接中断程序,也会对现行环境进行清理。就是进行第5个操作。

配置文件常用

路径

inventory:主机配置清单文件路径。

library:库文件存放目录

remote_tmp:远程被控端文件存放路径

local_tmp:服务端生成文件存放路径

log_path:日志路径

小注释

1.主机添加信息时一定要使用分组,通过分组把资源按各种特性按类分派。

2.在主机列表中添加连续的主机可以使用如192.168.100.[1-100]表示192.168.1.1-192.168.1.100这100个ip地址。

3.ansible控制端取消首次登录输入yes的操作在配置文件设置host_key_checking = False

4.ansible种返回结果默认颜色标识。 黄色:成功-修改动作。 绿色:成功-查询动作。

5.颜色可以根据自己的习惯修改,在/etc/ansible/ansible.cfg文件中[colors]里面定义。

6.playbook同等于脚本,role是一堆playbook的集合用来实现特定的功能。

7.yaml文件有敏感信息时必须进行加密,加密过后必须进行解密操作后才能操作。

8.command模块时ansible的默认模块很多通配符都无法支持,一般情况下不适用command模块。command模块不支持管道符和变量等,如果要使用这些,需要shell模块。

9.shell模块实现的功能比command多,支持很多如管道符等特殊符号。shell也不完全能够完美适用于所有shell命令。

10. 专用的操作请使用ansible专用的模块。

11.ansible执行命令时确定不用对端设备的信息收集时请关闭连接时的信息收集的选项。gather_facts:no

12.通过playbook执行了相关 操作过后,使用ansbile-hoc命令检查测试是否达成预期目的。

配置文件

ansible一般有两种安装方式使用得比较多得是直接使用操作命令进行安装,也可通过python模块得方式安装。

如果通过操作系统软件包管理工具,那么在/etc/ansible 目录下应该已经有了ansible.cfg 配置文件。

以python模块包得方式安装的情况需要设置配置文件。

ansible配置文件在/etc/ansible/ansible.cfg

Ansible 配置文件是以ini 格式存储配置数据的,在Ansible 中,几乎所有的配置项都可以通过 Ansible 的 playbook 或环境变量来重新赋值。在运行Ansible 命令时,命令将会按照预先设定的顺序查找配置文件,如下所示:

1)ANSIBLE_CONFIG :首先,Ansible 命令会检查环境变量,及这个环境变量将指向的配置文件。

2)./ansible.cfg:其次,将会检查当前目录下的ansible.cfg 配置文件。

3)~ /.ansible.cfg:再次,将会检查当前用户home 目录下的.ansible.cfg 配置文件。

4)/etc/ansible/ansible.cfg :最后,将会检查在用软件包管理工具安装Ansible 时自动产生的配置文件。

5)大多数的Ansible 参数可以通过设置带有ANSIBLE_ 开头的环境变量进行配置,参数名称必须都是大写字母,如下配置项:
export ANSIBLE_SUDO_USER=root
设置了环境变量之后,ANSIBLE_SUDO_USER 就可以在playbook 中直接引用。

常用命令

hoc

ansible-doc ::查看帮助文件

ansible-doc -l :查看有多少个模块

ansible-doc 模块名:查看具体模块使用方法(详细)

ansible-doc -s 模块名 :查看具体模块的使用方法(简单),推荐使用这个命令来查看帮助文档。

ansible-galaxy:查找获取互联网中别人定义的role。可在https://galaxy.ansible.com/网站查看搜索相关的role。

ansible-galaxy install role名 : 安装指定的模块

ansible-galaxy remove role名 : 卸载指定的模块系统中存在的

ansible-galaxy list :查看系统中存在的role

ansible-vaultencrypt xxxx.yml :加密xml文件

ansible-vault decrypt xxxx.yml : 解密xml文件

ansible-vault view xxxx.yml : 查看加密的xml文件

ansible-vault edit xxxxx.yml : 修改

ansible-vault rekey xxxxx.yml : 修改指定文件的口令

playbook

ansible-playbook -C XXXX.yaml 运行前检测,不实际运行。-C是大写

ansible-playbook --list-hosts XXXX.yaml 查看playbook脚本中包含的主机列表

ansible-playbook --list--tags XXXX.yaml 查看标签

ansible-playbook --list-tasks XXXX.yaml 查看playbook脚本中task列表

ansible-playbook --limit XXXX.yaml 限制文本中部分主机执行脚本

ansible-playbook -v -vv -vvv XXXX.yaml 查看脚本执行过程中的信息

ansible-playbook -t 标签名 XXXX.yaml 只指定执行yaml文件中带有特定tag的task

模块

command模块:
作用:远程调用执行命令
常用参数:chdir(切换路径) creates(创建文件,如果存在则不创建) removes(删除文件,如果不存在则删除失败)

shell模块:
作用:远程调用执行命令,支持管道符等特殊字符。
常用参数:chdir(切换路径) creates(创建文件,如果存在则不创建) removes(删除文件,如果不存在则删除失败)

script:
作用:服务端脚本拷贝至远端执行。

copy:
作用:拷贝服务端文件至被控端服务器。
参数:src(源路径) dest(目的路径) mode(权限) owner(用户)
注:copy模块可以实现文件夹的远程复制。例src=/dir1/dir2/ 表示dir2文件夹下所有文件, src=/dir1/dir2 表示dir2文件夹本身。

fetch:
作用:抓取原路径下的文件到对端指定目录中,不能抓取目录。抓取的结果会在dest路径中以src的目录结构创建子目录保存。
参数:src(源路径) dest(目的路径)
注:如src=/dir1/dir2/file1 dest=/test/ 结果是:/test/dir1/dir2/file1

unarchive:
作用:解压操作
参数:copy(是否进行待解压包拷贝) src(源路径) dest(目的路径) owner(用户)
注:解压模块默认的流程是先把压缩包从服务端拷贝到被控端后再执行解压。如果压缩包本来就在本地则不需要进行复制操作,使用copy=no参数。

archive:
作用:打包软件。
参数:
注:

hostname:
作用:修改主机名
参数:name(主机名称)

cron:
作用:添加修改查看计划任务。
参数:minute(分钟) hour(小时) day(天) month(月) weekday(周) disabled(暂停)
注:计划任务存放在/var/spool/cron/用户名 目录下

yum:
作用:redhat系列操作系统包管理模块
参数:name(软件名) state(状态 ,absent卸载、present安装、started启动、stopped停止、restarted重启)

user:
作用:用户管理模块

group:
作用:用户管理模块

lineinfile:
作用:修改文件中特定的行,同等于操作系统中的sed命令。
参数:path(文件路径) regexp(正则表达式) line(修改成的结果) state=absent(删除特定的行)

replace:
作用:修改该制定文件中的内容,同等于操作系统中的sed命令。
注:ansible all -m replace -a "path=/etc/fstab regexp='^(UUID.*)' replace='#\1'" 为/etc/fstab文件中UUID开头的行加上#

setup:
作用:收集主机信息
参数:filter(筛选制定的参数)
注:该模块在ansible执行命令时会自动运行,如果确定不需要被控端主机的信息,一定要在配置文件或playbook脚本中关闭收集主机信息操作。会节约很多资源的。

file:

作用:处理文件。

Playbook

yaml语法格式

每单一文件第一行,使用 "---"开始。在结尾的时候使用三个点“...”来表示,不是必须的。

次行开始写playbook的内容。

使用#表示注释代码。

缩进必须是统一的,不能出现“tab”和“空格”混用。

同一级别的缩进一致。

yaml文本对大小写敏感。

多个k/v可同行写也可单独成行写,在一行中书写多个K/V时每个键值对使用“,”隔开。

K/V中的v可以是单个字符串亦可时另一个列表。

#基础playbook格式     
---
- hosts: 应用主机
gather_facts:no 设置不收集被控主机信息 tasks: - name: 自定义task名 模块名: 模块相关参数 - name: 自定义task名 模块名: 模块相关参数 ...

handlers/notify

变量

变量定义: K=V ,如variable=values

变量调用: {{ variable }} 或 “{{ variable }}”

变量定义方式:

  • 命令行中定义: ansible-playbook -e k=V
  • yaml文件中定义:
    ---
    - hosts: all
    vars:
    - host: lvant
    - system_os: centos
    tasks:
    - name: file create
    file: path=/root/{{ host }}_{{ system_os }}.file state=touch
  • 使用变量文件:
    # cat vars.yml      //变量文件
    ---
    system_version: 7
    child_version: 6


    # cat test_file_var.yml //playbook文件
    ---
    - hosts: all
    vars_files:
    - vars.yml
    tasks:
    - name: touch file
    file: path=/root/{{ system_version }}_{{ child_version }}.filetxt state=touch
  • /etc/ansible/hosts中定义:
    #其中host和machine就是自定义的变量
    [lvs] lvs1 host=test1 ansible_ssh_host=192.168.111.11 ansible_ssh_user='root' ansible_ssh_pass='yinwan' ansible_ssh_port=22 lvs2 host=test2 ansible_ssh_host=192.168.111.12 ansible_ssh_user='root' ansible_ssh_pass='yinwan' ansible_ssh_port=22 [lvs:vars] machine=lvs

role

ansible系统复习学习笔记-从零到无 相关文章

  1. 推荐系统之标签体系

    为什么要先介绍标签体系? 一个推荐系统效果好与坏最基本的保障、最基础的是什么?如果让我来回答,一定是标签体系。我这里说的标签主要是针对物料的,对于电商平台来说就是商品;对于音乐平台来说就是每一个首歌,对于新闻资讯平台来说就是每一条新闻。下一

  2. 解决ubuntu安装后进入系统时黑屏,左上角闪动光标(ubuntu20.04)

    解决ubuntu安装后进入系统时黑屏,左上角闪动光标(ubuntu20.04) 如果是因为分区信息调整,导致grub找不到linux系统安装分区上的引导信息,那么解决方法如下: 这里解释下发生了什么: 1)问题开始是因为,在某个硬盘上安装好后,由于系统上有多个分区,并没

  3. Python基本文件操作

    引言: 1什么是文件: 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 用户/应用程序(open()) 操作系统(文件) 计算机硬件(硬盘) 2为何要用文件 用户/应用程序可以通过文件将数据永久的保存在硬盘中 操作文件就是操作硬盘 用户/应用程

  4. 分布式系统限流算法分析与实现

    一、限流的关键作用 对于大型互联网架构中,限流的设计是必不可少的一个环节。在给定的时间内, 客户端请求次数过多, 服务器就会拦截掉部分请求,避免请求流量过大造成数据库负载高的问题。 二、常见限流算法利弊分析 计数器限流 计数器限流主要有固定窗口计

  5. 【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据

    任务描述 本次集中介绍使用Windows和Linux()搭建本地Redis服务器的步骤,从备份的RDB文件中加载数据,以及如何生成AOF文件和通过AOF文件想已经运行的Redis追加数据。 操作步骤 Windows版本 启动Redis-server 1:下载Redis for Windows的压缩包或者安装文件,

  6. 在多道程序设计的计算机系统中,CPU可以做什么

    在多道程序设计的计算机系统中,CPU可以被多个程序交替占用。在单核CPU中,一条线程在某一时刻只能由一个进程锁定并使用;在多应用下,一般采用轮询机制,给多个应用划分时间片,CPU在多个应用进程之间快速切换,以达到多进程工作的目的。 本教程操作环境:w

  7. 能够把高级语言编写的源程序翻译成目标程序的系统软件是什么

    能够把高级语言编写的源程序翻译成目标程序的系统软件是“编译程序”。编译程序属于采用生成性实现途径实现的翻译程序;它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。 本教程操作环境:windows7系统、Dell G3

  8. 能够把高级语言编写的源程序翻译成目标程序的系统软件是什么

    能够把高级语言编写的源程序翻译成目标程序的系统软件是“编译程序”。编译程序属于采用生成性实现途径实现的翻译程序;它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。 本教程操作环境:windows7系统、Dell G3

  9. 分布式文件系统MFS、Ceph、GlusterFS、Lustre的比较

    **MooseFS(MFS)** **Ceph** **GlusterFS** **Lustre** **Metadata server** 单个MDS。存在单点故障和瓶颈。 多个MDS,不存在单点故障和瓶颈。MDS可以扩展,不存在瓶颈。 无,不存在单点故障。靠运行在各个节点上的动态算法来代替MDS,不需同步元数据,无硬盘I/

  10. 5大芯片代表巅峰对话:一个面向未来的操作系统是怎样的

    在刚刚过去的 openEuler Summit 2020 峰会上,InfoQ 主编小智受邀主持了「一个面向未来的操作系统是怎样的」圆桌论坛。本次圆桌邀请到了鲲鹏计算研发部部长颜叶女士、飞腾操作系统总监陈鲍孜、中科院计算所研究员包云岗、安晟半导体首席软件工程师费斐、上海

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2020, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词