linux免密码登陆:
ssh-keygen -t rsa
ssh-copy-id -p 34539 root@192.168.30.45
添加ansible主机组:
vim /etc/ansible/hosts
[dbservers]
db01.intranet.mydomain.net
db02.intranet.mydomain.net
10.25.1.56:22
10.25.1.57:2222
# 定义多个组,把一个组当另外一个组的组员
[webserver:children] #webserver组包括两个子组:apache nginx
apache
nginx
查看ansible所有模块及帮助文档:
ansible-doc ping
查看简易帮助
ansible-doc -s ping
默认配置文件:/etc/ansible/ansible.conf
#inventory = /etc/ansible/hosts 主机列表配置文件
#library = /usr/share/my_modules/ 库文件存放目录
#module_utils = /usr/share/my_module_utils/
#remote_tmp = ~/.ansible/tmp 临时py命令文件存放远程主机目录
#local_tmp = ~/.ansible/tmp 本机的命令执行目录
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks = 5 并发执行数
#poll_interval = 15
#sudo_user = root 默认sudo用户
#ask_sudo_pass = True 每次执行ansible命令是否询问ssh密码
#ask_pass = True
#transport = smart
#remote_port = 22
#module_lang = C
#module_set_locale = False
#log_path = /var/log/ansible.log 日志文件
#host_key_checking = False 检查对应服务器的host_key,建议取消
ansible 通过SSH服务实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于秘钥认证的方式联系各个被管理节点
ansible命令简单介绍
ansible <host-pattern> [-m module_name] [-a arges]
-- version显示版本
-m module 指定模块,默认command
-v详细 -vv -vvv
--list_host 显示主机列表,简写--list
-k --ask-pass 提示输入ssh链接密码,默认key验证
-K --ask-become-apss 提示输入sudo时的口令
-C --check 检查,并不执行
-T --timeout=TIMEOUT 执行命令的超时时间 默认10s
-u --user=REMOTE_USER 执行远程执行的用户
-b --become 代替旧版的sudo切换
host-pattern
1. all
2. 或关系:hostlist:hostlist
3. 逻辑与:'hostlist:&hostlist'
4. 逻辑非:'hostlist:!hostlist' #此处必须使用单引号
执行状态:
- 绿色:执行成功并且不需要做改变的操作
- 黄色:执行成功并且对目标主机做变更
- 红色:执行失败
[colors]
#highlight = white
#verbose = blue
#warn = bright purple
#error = red
#debug = dark gray
#deprecate = purple
#skip = cyan
#unreachable = red
#ok = green
#changed = yellow
#diff_add = green
#diff_remove = red
#diff_lines = cyan
ansible常用模块:
command:
默认模块,此命令不支持$VARNAME、< > | &等,需要使用shell模块
shell:
替代command使用,ansible node -m shell -a 'echo $HOSTNAME'
script:
指定脚本在远程主机执行,ansible node -m script -a '/test.sh'
copy :
ansible node -m copy -a 'src=/xx/xxx/file1 dest=/xx/xx/file1 backup=yes mode=000 owner=xxx'
backup备份原有文件
mode修改文件属性
owner修改文件属主
content命令的内容直接在目标主机生成文件
fetch:
抓取远程节点的文件,只支持一个文件
ansible node -m fetch -a 'src=/etc/fstab dest=/data'
file:
ansible node -m file -a '[path|dest|name]=/data/xx status=[directory|file|hard|link|touch|absent(default file)] '
hostname:
ansible node -m hostname -a 'name=xxxx'
crom
创建任务
ansible node -m cron -a 'minute=(0-59, *, */2, etc) hour=( 0-23, *, */2, etc ) day=( 1-31, *, */2, etc ) month=( 1-12, *, */2, etc ) weekday=( 0-6 for Sunday-Saturday, *, etc ) job=/usr/sbin/ntpdata 10.10.10.10 naem="CRON_NAME"'
删除、禁用、启用任务
ansible node -m cron -a 'disabled=[yes|no|true|false] job=/usr/sbin/ntpdata 10.10.10.10 naem="CRON_NAME"'
yum管理包
ansible node -m yum -a 'name=SOFTWARE1,SOFTWARE2 status=[install (`present' or `installed', `latest'), or remove (`absent' or `removed'(default installed)]
安装本地rpm
ansible node -m yum -a 'name=/data/xxx.rpm disable_gpg_check=yes'
更新yum缓存
ansible node -m yum -a 'name=xxx update_cache=yes'
service管理服务
ansible node -m service -a 'name=vsftpd status=[started|stoped|restarted|reloaded] enabled=[true|false]'
user
创建账号
ansible node -m user -a 'name=nginx shell=/sbin/nologin system=yes home/xx/xx/ group=root,xx'
删除账号
ansible node -m user -a 'name=nginx state=absent remove=yes'
group
创建组
ansible node -m user -a 'name=nginx system=yes gid=80'
删除组
ansible node -m user -a 'name=nginx status=absent'