Ansible学习笔记02

Ansible安装与配置

  • Ansible对Python环境的版本最低要求为python2.6以上
  • Red Hat、CentOS操作系统可以直接基于YUM工具自动安装Ansible,CentOS安装前需先安装epel扩展源
yum install epel-release -y
yum install ansible -y
  • Ansible工具默认主目录为/etc/ansible,其中hsots文件为被管理机IP或者主机名列表,ansible.cfg为ansible主配置文件,roles为角色或者插件路径,默认该目录为空
ls -l /etc/ansible/
-rw-r--r-- 1 root root 19985 Mar  7 12:43 ansible.cfg
-rw-r--r-- 1 root root  1016 Mar  7 12:43 hosts
drwxr-xr-x 2 root root     6 Mar  7 12:43 roles
  • Ansible远程批量管理,其中执行命令是通过Ad-Hoc来完成,也即点对点执行命令,能够快速执行,而且不需要保存执行的命令.默认hosts文件配置主机列表,也可以配置分组,可以定义各种IP及规则,hosts列表默认为
image.png
  • Ansible基于多模块管理,常用的Ansible工具管理模块包括:command、shell、script、yum、copy、file、async、docker、cron、mysql_user、sysctl、user、acl、add_host、easy_install、haproxy等.可以使用ansible-doc -l|less查看Ansible支持的模块,也可以查看每个模块的帮助文档,用法为ansible-doc module_name

Ansible参数

  • 基于Ansible批量管理,需将被管理的服务器IP列表添加至/etc/ansible/hosts文件,本机也可以是管理机.
image.png
  • Ansible管理客户端需基于SSH.在登陆远程服务器执行命令时需要远程服务器的用户名和密码,也可以加入-k
  • 参数手动输入密码或者基于ssh-keygen生成免秘钥
  • Ansible参数:
    • -v,-verbose:打印详细模式
    • -i PATH,-inventory=PATH:指定host文件路径
    • -f NUM,-forks=NUM:指定fork开启同步进程的个数,默认为5
    • -m NAME,-module-name=NAME:指定module名称,默认模块为command
    • -a MODULE_AGRS:module模块的参数或者命令
    • -k,-ask-pass:输入远程被管理端密码
    • -sudo:基于sudo用户执行
    • -K,-ask-sudo-pass:提示输入sudo密码与sudo一起使用
    • -u USERNAME,-user=USERNAME:指定执行用户
    • -C,--check:测试执行过程,不改变真实内容,相当于预演
    • -T TIMEOUT:执行命令超时时间,默认为10s
    • --version:查看Ansible软件版本信息

Ansible 配置公私钥

  • Ansible是基于ssh协议实现的,其配置公私钥的方式与ssh协议的方式相同
# 1.生成私钥
ssh-keygen 
# 2.向主机分发私钥
ssh-copy-id root@10.0.0.203
ssh-copy-id root@10.0.0.204
# 3.取消-k参数进行测试
ansible  10.0.0.203 -m shell -a "crontab -l"
image.png

Ansible ping模块

  • Ansible最基础的模块为ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器,返回值为changed、ping

  • 案例:

    • 使用Ansible ping服务器状态
    ansible -k all -m ping
    
image.png

Ansible command模块

  • Ansible command模块为Ansible默认模块,主要用于执行Linux基础命令,可以执行远程服务器命令执行、任务执行等操作

  • command模块参数:

    • Chdir:执行命令前,切换到目录
    • Creates:当文件存在时,则不执行该步骤
    • Executable:换用shell环境执行命令
    • Free_form:需要执行的脚本
    • Removes:当该文件不存在时,则不执行该步骤
    • Warn:若在ansible.cfg中存在告警,如果设定了false,不会警告此行
  • 案例

    1. Ansible command模块远程执行date命令
    ansible -k -i /etc/ansible/hosts all -m command -a 'date'
    ansible  all -a 'date' # 简写
    
image.png
  1. Ansible command模块远程执行ping命令
ansible -k all -a 'ping -c 1 10.0.0.2'
image.png
  1. Ansible hosts正则模式远程执行df -h
ansible -k 10.0.0.20* -a 'df -h'
image.png

Ansible copy模块

  • Ansible copy主要用于文件或目录复制,支持文件、目录、权限、用户组功能.

  • copy模块参数:

    • src:Ansible端源文件或者目录,空文件夹不复制
    • content:用来替代src,用于将指定文件的内容复制到远程文件内
    • dest:客户端目标目录或者文件,需要绝对路径
    • backup:复制之前,先备份远程节点上的原始文件
    • directory_mode:用于复制文件夹,新建的文件会被复制,而老旧的不会被复制
    • follow:支持link文件复制
    • group:设定远程主机文件夹的组名
    • owner:设定远程主机文件夹的用户名
    • mode:设定远程主机文件及文件夹的权限
  • 案例

    1. Ansible copy模块操作,src表示源文件,dest表示目标目录或文件,owner指定属主
    ansible -k all -m copy -a 'src=/etc/passwd dest=/tmp mode=755 owner=root'
    
image.png
  1. Ansible copy模块操作,content表示文件内容,dest表示目标文件,owner指定属主
ansible -k all -m copy -a 'content="hello world!!!" dest=/tmp/hello.txt mode=755 owner=root'
image.png
  1. Ansible copy模块操作,content表示文件内容,dest表示目标文件,owner指定属主,backup=yes开启备份
ansible -k 10.0.0.203 -m copy -a 'content="hello world" dest=/tmp/hello.txt backup=yes mode=755 owner=root'
image.png
image.png

Ansible YUM模块

  • Ansible YUM模块主要用于软件的安装、升级、卸载,支持红帽rpm软件包的管理

  • YUM模块参数

    • conf_file:设定远程YUM执行时所依赖的YUM配置文件
    • disable_gpg_check:安装软件包之前是否坚持gpg key
    • name:需要安装的软件名称,支持软件组安装
    • update_cache:安装软件前更新缓存
    • enablerepo:指定repo源名称
    • skip_broken:跳过异常节点
    • state:软件包状态,包括installed、present、latest、absent、removed
  • 案例

    1. Ansible YUM模块操作,name表示需安装的软件名称,state表示状态,常见state=installed表示安装软件
    ansible -k 10.0.0.203 -m yum -a 'name=systat,screen state=installed'
    
image.png
  1. Ansible YUM模块操作,name表示需安装的软件名称,state表示状态,,常见state=absent表示卸载软件
ansible -k 10.0.0.203 -m yum -a 'name=screen state=absent'
image.png
  1. Ansible YUM模块操作,name表示需安装的软件名称,state表示状态,常见state=installed表示安装软件,disable_gpg_check=no表示不检查key
ansible -k 10.0.0.203 -m yum -a 'name=sl state=installed disable_gpg_check=no'
image.png

Ansible file模块

  • Ansible file模块主要用于对文件的创建、删除、修改、权限、属性的维护和管理

  • file模块参数

    • src:Ansible端源文件或目录
    • follow:支持link文件复制
    • force:覆盖远程主机不一致的内容
    • group:设定远程主机文件夹的组名
    • mode:设定远程主机文件及文件夹的权限
    • owner:设定远程主机文件夹的用户名
    • path:目标路径,也可以用dest,name替代
    • state:状态包括file、link、directory、hard、touch、absent
    • attributes:文件或者目录特殊权限
  • 案例

    1. Ansible file模块操作,path表示目录的名称和路径,state=directory表示创建目录
    ansible -k 10.0.0.203 -m file -a "path=/tmp/`date +%F` state=directory mode=755"
    
image.png
  1. Ansible file模块操作,path表示目录的名称和路径,state=touch表示创建文件
ansible -k 10.0.0.203 -m file -a "path=/tmp/aaa.txt state=touch mode=755"
image.png

Ansible user模块

  • Ansible user模块主要用于操作系统用户、组、权限、密码等操作

  • user模块参数

    • system:默认创建为普通用户,为yes则创建系统用户
    • append:添加一个新的组
    • comment:新增描述信息
    • createhome:给用户创建家目录
    • force:强制删除用户
    • group:创建用户主组
    • groups:将用户加入组或者附属组添加
    • home:指定用户的家目录
    • name:指定用户名
    • password:指定用户的密码,此处为加密密码
    • remove:删除用户
    • shell:设置用户的shell登录环境
    • uid:设置用户ID
    • update_password:修改用户密码
    • state:用户状态是否create、remove、modify,默认为present,表示新建用户
  • 案例

    1. Ansible user模块操作,name表示用户名称,home表示家目录
    ansible -k 10.0.0.203 -m user -a "name=aabb home=/tmp"
    
image.png
  1. Ansible user模块操作,name表示用户名称,home表示家目录并指定其shell
ansible -k 10.0.0.203 -m user -a "name=aabbcc shell=/sbin/nogloin"
image.png
  1. Ansible user模块操作,name表示用户名称,state=absent表示删除用户
ansible -k 10.0.0.203 -m user -a "name=aabbcc state=absent"
image.png

Ansible cron模块

  • Ansible cron模块主要用于添加、删除、更新操作系统crontab任务计划

  • cron模块参数

    • name:任务计划名称
    • cron_file:替换客户端该用户的任务计划的文件
    • minute:分(0-59,*,*/2)
    • hour:时(0-23*,*/2)
    • day:日(0-31,*,*/2)
    • month:月(1-12,*,*/2)
    • weekday:周(0-6或1-7,*)
    • job:任何计划执行的命令,state要等于present
    • backup:是否备份之前的任务计划
    • user:新建任务计划的用户
    • state:指定任务计划present、absent
  • 案例

    1. Ansible cron模块操作,基于cron模块,创建crontab任务计划
    ansible -k 10.0.0.203 -m cron -a "minute=0 hour=0 day=* month=* weekday=* name='Ntpdate server for sync time' job='/usr/sbin/ntpdate ntp1.aliyun.com'"
    
image.png
  1. Ansible cron模块操作,基于cron模块,备份crontab任务计划,backuo=yes表示开启备份,备份文件存放于客户端/tmp
ansible -k 10.0.0.203 -m cron -a "minute=0 hour=0 day=* month=* weekday=* name='Ntpdate server for sync time' backup=yes job='/usr/sbin/ntpdate ntp1.aliyun.com'"
image.png
  1. Ansible cron模块操作,基于cron模块,删除crontab任务计划
ansible -k 10.0.0.203 -m cron -a "name='Ntpdate server for sync time' state=absent"
image.png

Ansible synchronize模块

  • Ansible synchronize模块主要用于目录、文件同步,主要基于rsync命令工具同步目录和文件

  • Ansible synchronize模块参数

    • compress:开启压缩,默认为开启
    • archive:是否采用归档模式同步,保证源文件和目标文件属性一致
    • checksum:是否校验
    • dirs:以非递归的方式传输目录
    • links:同步链接文件
    • recursive:是否递归yes/no
    • rsunc_opts:使用rsync的参数
    • copy_links:同步的时候是否复制链接
    • delete:删除源中没有而目标存在的文件
    • src:源目录及文件
    • dest:目标目录及文件
    • dest_port:目标接受的端口
    • rsync_path:服务的路径,指定rsync命令来在远程服务器上运行
    • rsync_timeout:指定rsync操作的IP超时时间
    • set_remote_user:设置远程用户名
    • --exclude=.log:忽略同步.log结尾的文件
    • mode:同步的模式,rsync同步的方式push、pull,默认都是推送push
  • 案例

    1. Ansible synchronize模块操作,src为源目录,dest为目标目录
    ansible -k 10.0.0.203 -m synchronize -a "src=/tmp dest=/tmp"
    
image.png
  1. Ansible synchronize模块操作,src为源目录,dest为目标目录,compress=yes表示开启压缩,delete=yes表示数据一致,rsync_opts为同步参数,--exclude表示排除文件
ansible -k 10.0.0.203 -m synchronize -a "src=/test/ dest=/test/ compress=yes delete=yes rsync_opts=--no-motd,--exclude=.txt"
image.png

Ansible shell模块

  • Ansible shell模块主要用于远程客户端上执行各种shell命令或者运行脚本,远程执行命令通过/bin/sh环境来执行,支持比command更多的指令

  • shell模块参数

    • Chdir:执行命令前,切换到目录
    • Creates:当该文件存在时,则不执行该步骤
    • Executable:换用shell环境执行命令
    • Free_form:需要执行的脚本
    • Removes:当该文件不存在时,则不执行该步骤
    • Warn:如果在ansible.cg中存在告警,如果设定了false,不会警告此行
  • 案例

    1. Ansible shell模块操作,-m shell指定模块为shell,远程执行shell脚本,远程执行脚本也可采用script模块.并把执行结果追加到客户端服务器/tmp/var.log文件
    ansible -k 10.0.0.203 -m shell -a "/bin/sh /tmp/test.sh>>/tmp/var.log"
    
image.png
  1. Ansible shell模块操作,远程执行创建目录命令,执行之前切换在/tmp目录,屏蔽警告信息
ansible -k 10.0.0.203 -m shell -a "mkdir -p `date +%F` chdir=/tmp state=directory warn=no"
image.png
  1. Ansible shell模块操作,-m shell指定模块为shell,远程客户端查看http进程是否启动
ansible -k 10.0.0.203 -m shell -a "ps -ef|grep httpd"
image.png
  1. Ansible shell模块操作,-m shell指定模块为shell,远程客户端查看crontab任务计划
ansible -k 10.0.0.203 -m shell -a "crontab -l"
image.png

Ansible service模块

  • Ansible service模块主要用于远程客户端各种服务管理,包括启动、停止、重启、重新加载等

  • Ansible service模块参数

    • enabled:是否开机启动服务
    • name:服务名称
    • runlevel:服务启动级别
    • arguments:服务命令行参数传递
    • state:服务操作状态,状态包括started、stopped、restarted、reloaded
  • 案例

    1. Ansible service模块操作,远程重启sshd服务
    ansible -k 10.0.0.203 -m service -a "name=sshd state=restarted"
    
image.png
  1. Ansible service模块操作,远程重启网卡服务,指定参数ens33
ansible -k 10.0.0.203 -m service -a "name=network args=ens33 state=restarted"
image.png
  1. Ansible service模块操作,远程开机启动mysqld服务,设置3,5级别自动启动
ansible -k 10.0.0.203 -m service -a "name=mysqld enabled=yes runlevel=3,5"
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容