zoukankan      html  css  js  c++  java
  • ansible详解-常用模块

    Ansible介绍

    ansible是一款轻量级的自动化管理工具,相对于puppet,saltstack来说它更加的轻量化,用python编写。支持多种指令操作,同时也支持playbook。通过ssh进行通信,客户端无需安装客户端即可进行批量管理,ansible对远程主机的操作具有幂等性,所以可以重复执行而不用担心有问题。

    ansible组成

    • ansible:主要的服务,用于调用其他各种组件;
    • inventoy:用于存储要控制的主机,包括主机用户名密码等信息;
    • playbooks:用于制定各种playbook;
    • core modules:ansible的核心模块,ansible依赖各种模块进行服务器控制;
    • custome modules:自定义模块;
    • connect plugins:调用python的并发连接器进行服务器连接;
    • other plugins:其他插件,例如日志记录,邮件等;

    ansible inventoy配置文件组成

    # This is the default ansible 'hosts' file.
    #
    # It should live in /etc/ansible/hosts
    #
    #   - Comments begin with the '#' character
    #   - Blank lines are ignored
    #   - Groups of hosts are delimited by [header] elements
    #   - You can enter hostnames or ip addresses
    #   - A hostname/ip can be a member of multiple groups
    
    # Ex 1: Ungrouped hosts, specify before any group headers.
    
    ## green.example.com
    ## blue.example.com
    ## 192.168.100.1
    ## 192.168.100.10
    
    # Ex 2: A collection of hosts belonging to the 'webservers' group
    
    ## [webservers]
    ## alpha.example.org
    ## beta.example.org
    ## 192.168.1.100
    ## 192.168.1.110
    
    # If you have multiple hosts following a pattern you can specify
    # them like this:
    
    ## www[001:006].example.com    #也可以使用此种方法来表示一个地址段,此处表示从001到006
    
    # Ex 3: A collection of database servers in the 'dbservers' group
    
    ## [dbservers]
    ## 
    ## db01.intranet.mydomain.net
    ## db02.intranet.mydomain.net
    ## 10.25.1.56
    ## 10.25.1.57
    
    # Here's another example of host ranges, this time there are no
    # leading 0s:
    
    ## db-[99:101]-node.example.com
    
    [test]
    192.168.189.129
    

    ansible控制方式

    • 免密钥控制
    • 通过inventoy记录主机ip地址(主机名)、用户名密码进行控制
    #vim /etc/ansible/hosts
    [webservers]
    192.168.1.[31:32] ansible_ssh_user='root' ansible_ssh_pass='redhat'
    

    ansible命令执行方式

    • 通过调用各种模块进行命令执行
    • 通过编写playbook进行服务器各种管理工作
      ansible (all|主机组名|主机名|ip地址) -m 模块名 -a '要调用的模块选项'

    ansible配置文件

    • /etc/ansible/ansible.cfg:ansible配置文件
    • /etc/ansible/hosts:inventoy配置文件

    ansible获取帮助信息

    ansible-doc -s 模块名

    ansible常用模块

    command:用于执行命令,但是不能应用变量,管道等
    ansible test -m command -a 'date'

    shell:类似command,可以用变量,管道等
    ansible test -m shell -a 'echo 1234567a |passwd test --stdin'

    user常用选项:

    • name:用户名
    • password:密码
    • state:present为添加,absent为删除
    • remove:删除用户,yes|no
    • system:是否为系统用户
    • createhome:是否创建家目录
    • shell:指定用户shell
    • group:设置基本组
    • groups:设置夫家族
    • uid:指定uid
      ansible test -m user -a 'name=hello password=123456 state=present system=yes createhome=no'

    group常用选项:

    • name:组名
    • gid:gid
    • state:present为创建,absent为删除
    • system:是否为系统组
      ansible all -m group -a 'name=hello system=yes state=present'

    cron常用选项:

    • day:天,1-9,,/3
    • hour:小时
    • month:月
    • name:cron任务名
    • state:present,absent
    • weekday:周
    • minute:分钟
    • job:工作内容
      ansible all -m cron -a 'minute=*/1 name="echo hello world" job="echo hello world" state=present'

    copy常用选项:

    • src:源文件绝对路径或相对路径
    • dest:目标地址,必须是绝对路径
    • content:可以代替src,要写入到dest文件中的内容,会echo追加进去
    • owner:属主
    • group:属组
    • backup:覆盖文件之前是否备份,yes|no
    • directory_mode:递归设定目录权限
    • force:yes,如果文件存在,但是内容不同,则强行覆盖,默认选项;no,如果文件不存在才复制
    ansible test -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=test group=hello'
    ansible test -m copy -a 'content="hello world" dest=/tmp/log.ansible'    #把hello world写入目标文件
    

    file常用模块,对被控主机文件进行操作:

    • owner:属主
    • group:属组
    • mode:权限
    • recurse:递归设置,对目录有限
    • state
      • touch:创建一个空白文件
      • directory:创建一个新目录,目录存在则不会修改
      • link:创建软链接
      • hard:创建硬链接
      • absent:删除
    • src:当state=link的时候,要被链接的源文件
    ansible test -m file -a 'path="/tmp/log.ansible" owner=root group=wheel mode=640'
    ansible test -m file -a 'src="/etc/fstab" path="/tmp/fstab.link" state=link'
    

    script,再被控主机执行ansible控制端的脚本:
    ansible test -m script -a '/root/test.sh'

    yum模块常用选项:

    • name:要安装的软件名
    • state
      • present:安装
      • absent:卸载
      • lastest:安装为最新版本

    setup用于收集指定远程主机的facts信息,这些facts信息可以作为变量被调用:
    ansible test -m setup

    service常用模块,用于控制服务:

    • enabled:该服务是否开机自启
    • name:服务名
    • state
      • started:启动
      • stopped:停止
      • restarted:重启
    • sleep:启动和停止中间sleep时间
    • runlevel:在哪些级别可以自启动
    • arguments:向命令行传递参数
      ansible test -m service -a 'name=httpd enabled=yes state=started'

    ping,用于测试远程主机是否在线,回复pong表示在线
    ansible test -m ping

  • 相关阅读:
    游戏编程模式之原型模式
    游戏编程模式之观察者模式
    游戏编程模式之享元模式
    游戏编程模式之命令模式
    数据库系统概论(二):关系数据库
    数据库系统概论(一):绪论
    [Unity] Unity Cursor 设置和API解析
    HDU 5492 Find a path
    HDU 1317 XYZZY
    Codeforces 508D Tanya and Password
  • 原文地址:https://www.cnblogs.com/stacks/p/8542126.html
Copyright © 2011-2022 走看看