千家信息网

ansible常用命令使用

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,ansible命令格式# 查看ansible帮助ansible -h# 命令格式Usage: ansible [options]-a MODULE_ARGS # 模块参数-C, --check #
千家信息网最后更新 2025年01月23日ansible常用命令使用
  1. ansible命令格式

# 查看ansible帮助

ansible -h

# 命令格式

Usage: ansible [options]


-a MODULE_ARGS # 模块参数

-C, --check # 干跑,白跑

-f FORKS, --forks=FORKS # 指定并发,默认5个

--list-hosts # 列出主机

-m MODULE_NAME # 模块名称

--syntax-check # 检查语法

-k # 密码


2.ansible链接机器

rpm -ql ansible|more # 查看ansible生成的文件


/etc/ansible

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

/etc/ansible/hosts # 配置管控机

/etc/ansible/roles # 空文件夹

# 在hosts文件中将主机地址一个个添加进去


ansible 主机地址 -m ping -k # ansible底层通过ssh实现


# 生成密钥

ssh-keygen

# 将公钥拷贝至目标主机

ssh-copy-id root@主机地址

# 通过ssh即可链接目标主机

ssh 'root@主机地址'

exit退出


# 完成上面的操作后 再去探测机器是否在线就不要再加-k

ansible 主机地址 -m ping


"""测试机器是否在线的方式及分组管理"""

ansible 192.168.226.101 -m ping # 单独机器的ping

ansible 192.168.226.101,192.168.226.102 -m ping # 多个机器的ping

ansible all -m ping # 全部机器

# 分组:比如有N多台机器,有些是负责数据库的,有些是uwsgi的,有些是redis的等

ansible web -m ping # 单个的组

ansible web,db -m ping # 多个组的并集

ansible 'web:&db' -m ping # 多个组的交集 必须是单引号 双引号不行

ansible 'web:!db' -m ping # 多个组的差集,在前面但是不在后面


3.ansible模块介绍

ansible-doc -l |wc -l # 查看ansible总模块数


4.ansible-doc 命令格式

-j # 以json的方式返回数据

-l, --list # 列出所有的模块

-s, --snippet # 以片段式显示模块信息

# 常用命令

ansible-doc -s 模块名 # 查看模块帮助信息


模块介绍

  • command

分组机器批量执行系统命令


ansible-doc -s command


ansible web -m command -a "pwd"

ansible web -m command -a "ls"

ansible web -m command -a "chdir=/tmp pwd" #切换目录并执行命令

ansible web -m command -a "creates=/tmp pwd" #因为tmp目录存在,pwd不会执行

ansible web -m command -a "creates=/tmp2 pwd" #因为tmp2不存在,pwd执行

ansible web -m command -a "removes=/tmp2 pwd" #因为tmp2不存在pwd不执行

ansible web -m command -a "removes=/tmp pwd" #因为tmp目录存在,pwd会执行


# 创建用户

ansible web -m command -a 'useradd jason'

# 设置密码(本机设置) 并需二次确认

passwd jason

# 设置密码(本机设置) 无需二次确认

echo "123" |passwd --stdin jason #设置用户的密码



  • shell

当命令中包含$home和常见符号(<,>,|,;.&)等的时候,需要使用shell才能生效


ansible-doc -s shell


ansible web -m shell -a "echo '123' |passwd --stdin jason"

ansible web -m shell -a "chdir=/tmp pwd" shabang

ansible 192.168.226.101 -m shell -a "bash a.sh" #执行shell脚本

ansible 192.168.226.101 -m shell -a "/root/a.sh" # 执行shell脚本,文件要有执行的权限

ansible 192.168.226.101 -m shell -a "/root/a.py" #执行Python文件


  • script

在远程机器上执行本地脚本

ansible-doc -s script

ansible db -m script -a "/root/a.sh" # 执行本地的文件,管控机的文件

ansible db -m script -a "creates=/root/a.sh /root/a.sh" # 判断被控机上的文件是否存在,如果不存在,就执行,如果存在,就跳过

ansible db -m script -a "creates=/tmp /root/a.sh" # 判断被控机上的文件


  • copy

将本地的文件拷贝到远程机器

ansible-doc -s copy


backup # 创建一个备份文件,以时间戳结尾

content # 直接往文件里面写内容

dest # 目标地址

group # 属组

mode # 文件的权限 W 2 R 4 X 1

owner # 属主

src # 源地址

ansible web -m copy -a "src=/etc/fstab dest=/tmp/f" # 复制本地文件到远程主机,并修改文件名,多次执行不会改变,因为checksum值是一样的

ansible web -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes" # 复制本地文件,并备份

ansible web -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes group=alex mode=755" # 复制本地文件到远程主机,并指定属组和权限

ansible web -m copy -a "src=/etc/init.d dest=/tmp backup=yes group=alex mode=755" # 复制本地的目录到远程主机,修改目录权限,则目录里面的文件也会跟着变更

ansible web -m copy -a "src=/etc/init.d/ dest=/tmp backup=yes group=alex mode=755" #复制本地目录下的所有文件,

ansible web -m copy -a "content='大弦嘈嘈如急雨,小弦切切如私语,嘈嘈切切错 杂弹,大珠小珠落玉盘' dest=/tmp/b" # 直接往文件里面写内容,覆盖写,慎用


  • File

文件属组、权限、硬软链等


group # 属组

mode # 权限

owner # 属主

path # 路径

src # 软硬链接

state =link

state =hard

state

directory # 目录

file

touch # 空文件

absent # 删除

link # 软连接

hard # 硬链接

ansible web -m file -a "path=/jason5 state=directory owner=jason" #创建目录,并制定属主

ansible web -m file -a "path=/tmp/jason.txt state=touch mode=777" #创建文件,并指定权限

ansible web -m file -a "path=/tmp/cron src=/var/log/cron state=link" #创建软链接,链接的是自己的文件

ansible web -m file -a "path=/tmp/cron state=absent" # 删除软连接

ansible web -m file -a "path=/jason5 state=absent" #删除文件夹



软连接 快捷方式(windows) ln -s 源文件修改软连接修改 源文件删除软连接失效 可以跨分区

硬链接 硬盘的位置 ln 源文件修改硬链接修改 源文件删除硬链接不变 不可以跨分区

复制 开辟新空间 cp 源文件修改cp的不变 源文件删除不变 可以跨分区


  • fetch

拉取远程主机文件

dest 目标地址

src 源地址

ansible web -m fetch -a "src=/var/log/cron dest=/tmp" # 拉取远程主机的文件,并以主机ip地址或者主机名为目录,并且保留了原来的目录结构


  • yum模块

ansible-doc -s yum


disablerepo # 禁用某个源

enablerepo # 启用某个源

name # 包名

state

install

remove

yum install -y python2-pip # 在epel源中

# 将主机中下载好的pip拷贝到其他被管控机上

ansible all -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/epel.repo'


ansible web -m yum -a "name=python2-pip" # 安装单个软件包


# 查看是否安装 对应机器上执行下述命令

rpm -q 包名

# eg:rpm -q pip/python-pip/python2-pip/redis


ansible web -m yum -a "name=python2-pip,redis" # 安装多个软件包

ansible web -m yum -a "name='@Development Tools'" # 安装包组

ansible web -m yum -a "name=nginx state=absent" # 卸载


  • pip模块

python安装第三方模块的工具


pip freeze > requirements.txt # 将本地环境导出到某个文件中,文件中不写版本信息默认安装最新版本

pip install -r requirements.txt # 安装所有的包(******)


pip list # 查看所有的包

pip uninstall flask # 卸载


# 下载包

Python setup.py build

python setup.py install


  • pip模块

ansible-doc -s pip


chdir # 切换目录

name # 包名

requirements # 导出的文件

virtualenv # 虚拟环境


# 安装django(时间较长~)

ansible web -m pip -a "name=django==1.11"


  • service模块

ansible-doc -s service

# 关键参数

enabled #开机启动

name #服务名称

state

started

stopped

restarted

reloaded

ansible web -m service -a "name=redis state=started" #启动

ansible web -m service -a "name=redis state=stopped" #关闭

ansible web -m service -a "name=redis enabled=yes" #设置开机自启动


  • cron计划任务模块

# 格式

* * * * * job

分 时 日 月 周 任务


ansible-doc -s cron


day # 天

disabled # 禁用crontab,表现形式加#

hour # 小时

job # 任务

minute # 分钟

month # 月

name # 名字,描述信息

user # 用户

weekday # 周


# 添加时名字必须不同,不加名称为None(crontab -l查看计划任务)

ansible web -m cron -a "minute=12 name=touchfile job='touch /tmp/xiaoqiang.txt'" # 创建

ansible web -m cron -a "name=touchfile state=absent" # 删除

ansible web -m cron -a "minute=12 name=touchfile2 job='touch /tmp/jason.txt' disabled=yes" # 注释

ansible web -m cron -a "name=None state=absent" # 删除名称为空的计划任务


  • user模块

ansible-doc -s user


group # 属组

groups # 附加组

home # 设置家目录

name # 用户名

remove # 删除用户并删除用户的家目录

shell # 用户登录后的shell

system # 系统用户

uid # 用户的id

ansible web -m user -a "name=alex10 shell=/sbin/nologin home=/opt/alex10 uid=3000 groups=root" #创建用户,并指定用户的shell,家目录,uid,以及附加组

ansible web -m user -a "name=alex11 shell=/sbin/nologin home=/opt/alex11"

ansible web -m user -a "name=alex12 system=yes" #创建系统用户

ansible web -m user -a "name=alex12 state=absent" #删除用户,单不删除家目录

ansible web -m user -a "name=alex11 state=absent remove=yes" # 删除用户并删除用户的家目录


  • group模块

ansible-doc -s group


gid # 组id

system # 系统组

name # 名称

ansible web -m group -a "name=jason10 system=yes gid=5000" # 创建系统组

ansible web -m group -a "name=jason11" # 创建普通的组

ansible web -m group -a "name=jason11 state=absent" # 删除组


  • setup模块

收集远程主机的一些基本信息

# 查看详细信息

ansible 主机名 -m setup|more


ansible_all_ipv4_addresses # 所有的ipv4地址

ansible_all_ipv6_addresses # 所有的ipv6地址

ansible_architecture # 系统的架构

ansible_date_time # 系统时间

ansible_default_ipv4 # 默认的ipv4地址

address # ip地址

alias # 网卡名称

broadcast # 广播地址

gateway # 网关

netmask # 子网掩码

network # 网段

ansible_default_ipv6 # 默认的ipv6地址

ansible_device_links # 系统的磁盘信息

ansible_distribution # 系统名称

ansible_distribution_file_variety # 系统的基于公司

ansible_distribution_major_version # 系统的主版本

ansible_distribution_version # 系统的全部版本

ansible_dns # 系统的dns 默认udp 端口53

ansible_domain # 系统的域 ldap

ipv4 # ipv4地址

ansible_env # 系统的环境

ansible_fqdn # 系统的完整主机名

ansible_hostname # 系统的简写主机名

ansible_kernel # 系统的内核版本

ansible_machine # 系统的架构

ansible_memtotal_mb # 系统的内存

ansible_memory_mb # 系统的内存使用情况

ansible_mounts # 系统的挂载信息

ansible_os_family # 系统家族

ansible_pkg_mgr # 系统的包管理工具

ansible_processor # 系统的cpu

ansible_processor_cores # 每颗cpu的核数

ansible_processor_count # cpu的颗数

ansible_processor_vcpus # cpu的个数=cpu的颗数*每颗cpu的核数

ansible_python # 系统python信息

ansible_python_version # 系统python的版本

ansible_system # 系统名字


文件 系统 主机 模块 地址 目录 用户 机器 信息 链接 命令 名称 权限 源文件 版本 任务 多个 密码 格式 目标 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苹果11备份时候显示服务器异常 微信连接服务器存在问题 数据库管理如何建表填写数据 数据库技术与城轨 网络安全工作四个方面 国外最好的云服务器 软件开发市场分析 首届国际航运科技和互联网大会 怀旧服狮心服务器排队 朋友圈数据库有损坏 西宁网络安全技术培训 工业能源管理系统软件开发价钱 北京萌芽网络技术有限公司 网络安全说的HW是啥 福建时代网络技术咨询报价 数据库远程连接关闭怎么办 两会期间网络安全工作 硬盘存储服务器与硬盘录像机连接 网络安全专业市场就业情况 服务器已打开为什么手机连不上网 服务器数据拦截 郑州互联网软件开发哪家正规 数据库设置主键和外键约束 在一场关于 网络技术是否 均衡教派服务器崩了 平台与服务器之间的关系 bbs论坛服务器迁移 用启动器玩我的世界怎么进服务器 国家网络安全专家资质 软件开发计划执行情况报告
0