ansible基础

一、ansible安装

yum install -y epel

yum install ansible

 

二、配置ansible

  1. 配置文件
    host_key_checking=False ssh登录是不提醒加入秘钥
    module默认的模块,默认是command
  2. inventory文件
    默认是/etc/ansible/host
  3. host文件的配置
    [hd]
    172.16.37.131 
    172.16.37.133 
    172.16.37.142
    
    [sd]
    172.16.37.134
    
    [redis]
    172.16.37.130
    
    [admin]
    172.16.37.135
    
    [data]
    172.16.37.136
    
    [game]
    172.18.37.139
    
    [open]
    172.18.37.140
    
    
    [mobile]
    134.64.4.189
    134.64.4.190
    
    [db]
    172.18.37.137
    172.18.37.138
    172.18.37.150
    172.18.37.151
    
    [redis]
    172.18.37.130
    172.18.37.145
    
    [api-bak]
    172.18.37.146
    
    [self]
    172.18.37.148
    
    [activity]
    172.18.37.147
    
    [logbak]
    172.18.37.141
    
    [test]
    172.18.37.132
    
    [waiwang:children]#主机组的组
    hd
    sd
    admin
    data
    mobile
    game
    
    
    [servers:children]
    hd
    redis
    admin
    data
    game
    open
    mobile
    db
    logbak
    redis
    api-bak
    self
    activity
    sd
    
    
    [test:vars]
    ansible_ssh_user=pp
    ansible_ssh_pass='123'
    ansible_su_pass='1234'
    
    
    [servers:vars]
    ansible_ssh_user=pp
    ansible_ssh_pass=1234
    ansible_su_pass='1234'
    #ansible_become=true #取消这个注释,默认用root用户远端执行
    ansible_become_method=su
    ansible_become_user=root
    ansible_become_pass='1234' 


三、ah-hoc模式下使用模块

  1. ad-hoc命令格式:  hosts -m 模块名 -a  '参数选项'  -K 登录密码 -b 提权 --become-method=su/sudo提权方法 -B 后台运行超时时间 -C 测试是否正常执行 -f ansible并行执行的个数  -i 指定主机清单文件
  2. 常用模块:
    command模块:运行shell命令 
    主要参数 creates,removes 检查状态在判断是否执行,creates是文件不存在执行,removes相反,文件存在时执行
    chdir 切换目录执行   
    举例:ansible host -m command -a 'chdir=/tmp removes=/home/test/testfile ls' 表示切换到/tmp目录,当/home/test/testfile文件存在是,执行ls命令
    command模块不能执行管道符号,可以用shell模块来取代
  3. shell模块,可以远程执行shell命令  ansible host -m shell -a 'shell命令'
  4. raw模块,目标主机没有python环境时可以用raw模块来执行命令
  5. file模块 ,操作远程主机文件,  group数组 owner 所有者 mode权限   path比选项,文件路径, recurese递归操作      
    软连接相关 force强制软连接 =yes/no   src=软连接源文件   dest=软连接目的    state=link时候使用
    state参数 : directory目录操作  link=软连接操作  touch 创建或修改文件时间   absent 删除文件 删除目录或者取消连接
  6. copy模块 :将文件复制到远程主机 
    参数:backup=yes 复制到远端存在的文件,备份
               src=本地文件路径  文件或者目录   以/结尾的只复制目录中的内容, 没有/结尾的复制整个目录
               dest远程主机的绝对路径
               content指定文件内容
               directory_mode目录权限
               force强制覆盖

  7. service 模块
    name安装的模块名称
    enabled开机启动
    sleep重启之间的沉睡时间
    state:started,stoped,restarted
  8. cron模块
    job执行的任务
    name 任务名称
    minute hour day month执行的时间参数
    user 执行的用户
  9. yum模块
    state=installed 安装
    name=包的名字
    enablerepo使用仓库
    例如 ansible host -m yum -a "name=redis state=installed enablerepo=repl"
  10. user模块
    用户相关操作
    修改用户的属组 ansible host -m user -a 'name=用户名 groups=附加组 group=组名'      groups配合append=yes使用,可添加多个附加组,不然会覆盖
    修改用户密码 python-->import crypt-->crypt.crypt('zjb1988920') 会得到一串密码
    使用ansible host -m user -a 'name=用户名 password=那串密码'    密码记得用双引号
  11. syschronize
    类似rsync同步

    ansible 172.16.213.77 -m synchronize -a 'src=/mnt/a dest=/tmp'
    ansible 172.16.213.77 -m synchronize -a 'mode=pull src=/mnt/a dest=/tmp'

  12. setup模块
    setup模块,主要用于获取主机信息,在playbooks里经常会用到的一个参数gather_facts就与该模块相关

    [root@linux ~]# ansible 172.16.213.77 -m setup -a 'filter=ansible_*_mb' //查看主机内存信息
    [root@linux ~]# ansible 172.16.213.77 -m setup -a 'filter=ansible_em[1-2]' //查看地接口为em1-2的网卡信息
    [root@linux ~]# ansible all -m setup --tree /tmp/facts //将所有主机的信息输入到/tmp/facts目录下,每台主机的信息输入到主机名文件中(/etc/ansible/hosts里的主机名)

  13. get_url下载文件

    ansible 172.16.213.77 -m get_url -a "url=http://172.16.213.157/Python-2.7.14.tgz dest=/mnt/python-2.7.14.tgz"

posted @ 2021-11-15 16:15  打哈欠的星星  阅读(113)  评论(0编辑  收藏  举报