• ansible学习笔记


    ansible是基于模块化的,通过调用特定的模块,完成特定的任务

    基于Python语言实现,由Paramiko、PyYAML和Jinja2三个关键模块实现

    部署简单,agentless(无需部署客户端,通过ssh协议管理各客户端)

    基于主从模式

    支持自定义模块 (其他编程语言写的模块,也可以经过ansible的接口调用)

    支持Playbook  连续任务按先后顺序完成

    支持幂等性:命令可重复运行

    ansible的组成部分:

       ansible core:ansible自身核心模块

       host inventory:主机库,定义可管控的主机列表

       connection plugins:连接插件,默认基于ssh协议连接

       modules:core modules(自带模块或核心模块)、custom modules(自定义模块,用户可基于任何编程语言编写自定义模块)

    配置文件:

       (1)ansible应用程序的主配置文件:/etc/ansible/ansible.cfg

       (2) Host Inventory定义管控主机:/etc/ansible/hosts   

    安装: yum -y install epel-release  yum -y install ansible

    命令的使用格式:ansible <host-pattern> [-m module_name] [-a args] [options]

    vim /etc/ansible/hosts

     上面是自定义单个主机示例

     自定义单个组示例,中括号中的字符是组名,一个主机可以属于多个主

    可以使用ansible -i /somefile     指明inventory host文件路径

    自定义两个组

    ansible-doc 命令查看相关帮助, ansible-doc -l  列出ansible支持哪些模块,ansible-doc -s  MODULE-NAME 查看模块支持哪些

    参数

    最简单的一条命令:ansible web1 -m ping,由于ssh不是基于密钥验证,此处会显示UNREACHABLE

    先得在各主机上配置密钥验证,首先创建密钥对,命令很简单ssh-keygen,加三次回车

    cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys    chmod 700 /root/.ssh/authorized_keys

    scp -p authorized_keys id_rsa id_rsa.pub 192.168.238.170:/root/.ssh/   (通过scp将密钥发往各主机)

    此时再来测试   ansible all -m ping    all表示所有主机

    ansible常用模块介绍

    ansible <host-pattern> [-m module_name] [-a args] [options]

    args:是key=value格式

    command:默认模块,可省略。在远程主机上进行操作命令,command不是key=value格式,后面直接跟命令

    例如:ansible all -m command -a ’ifconfig'

    注意:要用到管道类的命令,command无法执行

    user:添加删除user命令

    例如:ansible web1 -m user -a "name=apache state=present"    name指定用户名,present表示创建,absent表示删除

    删除家目录,要使用remove=true,要创建系统用户添加system=true

     

    cron 定义crontab中的条目的

    例如:ansible all -m cron -a "minute='*/5' job='/usr/sbin/ntpdate 133.100.11.8 &> /dev/null' name='sync time'"

    上面的name必须指定

    删除: ansible all -m cron -a "name='sync time' state=absent", 另外的参数month=  day=  weekday= 

    file  设置文件属性

    例如:ansible web1 -m file -a "path=/tmp/dir state=directory"      创建dir目录

       ansible web1 -m file -a "path=/tmp/nihao owner=root state=touch"   创建一个nihao的空文件

    yum   包管理器

    例如: ansible web1 -m yum -a "name=httpd state=present"   安装httpd包

    copy   完成文件复制

    例如:ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab mode=600'  src指定本地文件绝对路径,dest指定目标主机绝

    对路径,mode指定文件权限

    template   跟copy类似

    service   启动关闭 各个服务

    例如:ansible web1 -m service -a 'name=httpd state=started enabled=true'    启动http服务,enabled=true指定开机启动

    shell   在shell环境中运行shell命令

    例如:ansible all -m shell -a 'echo "0" | passwd --stdin root'

    setup 获取远程主机上的主机属性信息

    例如:ansible 192.168.238.170 -m setup 

    script    指定本地一个脚本文件,传递到远程主机上执行一遍

    vim /tmp/date.sh

    例如:ansible all -m script -a '/tmp/date.sh'   在所有主机上执行脚本设定时区

  • 相关阅读:
    Python中的list和tuple
    Python中输出格式化的字符串
    Python笔记-第一天
    在Lingo中输入矩阵(通过Excel)
    将Matlab中的矩阵输出到txt文件
    SQL中对于两个不同的表中的属性取差集except运算
    SQL中union运算操作的理解
    SQL笔记----在一个关系表中操作列
    MathType的公式在word中跟文字不对齐
    开发android过程中eclipse闪退解决
  • 原文地址:https://www.cnblogs.com/linuxboke/p/5468271.html
Copyright © 2020-2023  润新知