ansibe安装与基本模块学习

测试环境在xxxxx节点
版本ansible2.6.20  , 节点存在1.7 2.7 2.8 2.9版本的可以自行升降级,命令1版本有部分差别

1.ansible 安装

python setup.py install --record files.txt (指定安装信息保存在files.txt)
cat files.txt | xargs rm -rf  (通过files.txt保存信息可以卸载ansible)

ansible安装中
cp /opt/beh/ans/ansible-2.6.20/examples/ansible.cfg /etc/ansible
建议启用两个参数
host_key_checking=False #检查对应服务器的host_key,建议取消注释
log_path=/var/log/ansible.log #日志文件

测试命令:
ansible 192.168.10.10 -m command -a 'ls /'  -u hadoop -k -b -K

ansible系列的命令
ansible  ansible-doc  ansible-playbook  ansible-vault ansible-console ansible-galaxy  ansible-pull

2.模块查看
ansible-doc -l |wc -l
3681

ansible-doc命令使用
ansible-doc -a 显示所有模块的文档
-l ,--list 列出可用模块
-s ,--snippet 显示指定模块的playbook片段

3.ansible典型模块使用
(1)ansible通过ssh 实现配置管理,应用部署、任务执行等功能,建议配置ansible端能基于密钥认证的方式联系各被管理节点
(2)ansible  <host-pattarn>  [-m moudle_name] [-a args]
    --version 显示版本
    -m moudle 指定模块,默认为command
    -v 详细过程 -vv  -vvv更详细
    --list-hosts 显示主机列表。简写为--list
    -k ,--ask-pass  提示输入ssh连接密码,默认为Key验证
    -K .--ask-become-pass 提示输入sudo的口令
    -C ,--check 检查,不执行
    -T ,--timeout=TIMEOUT 执行命令的超时时间,默认为10s
    -u ,--user=REMOTE_USER 执行远程执行的用户
    -b ,--become 代替旧版的sudo切换

(3)ansible 的 host-pattarn
  匹配主机的列表
  all:表示所有Inventory中的所有主机
    ansible all -m ping
    通配符 *
    ansible serve* -m ping
    或的关系 :
    ansible servers:git  -m ping
    逻辑与 :& (需要用引号引起来)
    ansible "servers:&git"  -m ping
    逻辑非 :!
    ansible 'servers:!git'  -m ping
    在servers组但是不在git组
    注意,这里用单引号
    正则表达式
        ansible "servers:&dbvers"  -m ping
        ansible "~(ser|db)vers" -m ping

(4)ansible的命令执行过程
  1.加载自己的配置文件,默认/etc/ansible/ansible.cfg
  2.加载自己对应的模块文件,如 command
  3.通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应用户$HOME/.ansible/tmp/ansible-tmp-数字/xxx.py文件
  4.给文件+x执行
  5.执行并返回结果
  6.删除临时py文件,sleep 0退出

执行状态:
  绿色:执行成功并且不需要做改变的操作
  黄色:执行成功并对目标主机做出变更
  红色:执行失败

(5)ansible常用模块使用整理
  1.command :在远程主机执行命令,默认模块,可忽略-m选项
  eg: ansible all -a 'df -h'
  -chdir (切换文件夹)
  -create (存在而不执行)
  -removes(不存在而不执行)
  ansible all -a 'removes=/etc/fs cat /etc/fstab'
  ansible 192.168.10.10 -a 'useradd test1'
  ansible 192.168.10.10 -a 'getnet passwd test1'

  command 模块不支持 $VARNAME < > | ; & 等,这些用shell模块实现

  2.shell:和command相似,用shell执行命令
  ansible-doc shell
  ansible 192.168.10.10 -m shell -a "echo $HOSTNAME"
  ansible 192.168.10.10 -m shell -a "echo hsdekl_jd |passwd -stdin wang"

  3.script:运行脚本
  -a "/path/to/script_file"
  ansible servers -m  script -a "/opt/beh/ans/f1.sh"

  4.copy(从服务器复制文件到客户端):
  ansible servers -m copy -a 'src=/opt/beh/ans/f1.sh dest=/opt/beh backup=yes'
  默认复制过去,直接覆盖,这里backup设置为先备份
  ansible servers -m copy -a 'src=/opt/beh/ans/f1.sh dest=/opt/beh mode=000 owner=hive backup=yes' -b -K

  ansible servers -m copy -a 'content="hello"  dest=/opt/beh/he mode=000 owner=hive backup=yes' -b -K
  content 可以添加内容到文件传过去

  5.fetch (从客户端取文件到服务器端,copy相反):
  ansible-doc -s fetch
  只能抓取单个文件
  ansible servers -m fetch -a 'src=/var/log/messages dest=/opt/beh/test' -b -K

  [hadoop@jftestenv-cs31 beh]$ tree test/
test/
├── 10.124.211.32
│   └── var
│       └── log
│           └── messages
└── 192.168.10.10
    └── var
        └── log
            └── messages

   ansible 192.168.10.10 -m shell -a 'tar jcf log.tar.xz /var/log*.log'

   archive/unarchive(打包与解包模块)

   6.file(设置文件属性):
   ansible-doc -s file
   ansible 192.168.10.10 -m file -a 'name=/home/hadoop/ansible_test/666.test state=touch'  (创建文件)
   ansible 192.168.10.10 -m file -a 'name=/home/hadoop/ansible_test/666.test state=absent' (删除文件)
   ansible 192.168.10.10 -m file -a 'name=/home/hadoop/ansible_test/666.test state=directory' (创建文件夹)
   ansible 192.168.10.10 -m file -a 'name=/home/hadoop/ansible_test/666.test state=absent' (删除文件夹)
   ansible 192.168.10.10 -m file -a 'src=/home/hadoop/ansible_test/666.test dest=/home/hadoop/ansible_test/666.link  state=link' (创建软连接)
   ansible 192.168.10.10 -m file -a 'src=/home/hadoop/ansible_test/666.test dest=/home/hadoop/ansible_test/666.link  state=absent' (删除软连接)
   还支持owner和mode添加

   7.hostname(管理主机名)
   ansible 192.168.10.10 -m hostname -a 'name=node1' -b -K

   8.cron(计划任务)
   支持时间:minute ,hour ,day ,month ,weekday
   ansible 192.168.10.10 -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron' -b -K (添加一个每分钟执行的cron定时任务)

   ansible 192.168.10.10 -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron' -b -K (禁用) disabled=true/yes

   ansible 192.168.10.10 -m cron -a 'disabled=false job="/usr/bin/wall FBI warning" name=warningcron' -b -K (启用) disabled=false/no

   ansible 192.168.10.10 -m cron -a 'state=absent job="/usr/bin/wall FBI warning" name=warningcron' -b -K (删除)

   9.Yum (管理包)
   ansible 192.168.10.10 -m yum -a 'name=ftp' (安装)
   ansible 192.168.10.10 -m yum -a 'name=ftp state=absent' (卸载)

   ansible 192.168.10.10 -m yum -a 'name=ftp,expect' (安装多个)
   ansible 192.168.10.10 -m yum -a 'name=ftp,expect state=absent' (卸载多个)

   如果需要单独的安装独立的rpm包,需要先copy到所有执行节点 再执行
   ansible 192.168.10.10 -m yum -a 'name=/home/hadoop/mysql...rpm ' disable_gpg_check=yes' (忽略依赖检查)
   dstat (监控工具)
   ansible 192.168.10.10 -m yum -a 'name=dstat update_cache=yes' (更新缓存)

   10.service (服务管理)
   ansible-doc -s service
   ansible 192.168.10.10 -m service -a 'name=vsftpd state=started enabled=yes' (启动并设置开机自启动)

   确认下是否开机启动: systemctl is-enabled vsftpd
                      systemctl status vsftpd

   11.user (管理用户)
   ansible-doc -s user
   ansible 192.168.10.10 -m user -a 'name=yrz shell=/sbin/nologin system=yes home=/home/yrz groups=root,bin uid=2222 comment="test user"' -b -K (创建用户)
   命令检查:
   ansible 192.168.10.10 -a 'getent passwd yrz'
   ansible 192.168.10.10 -m shell -a 'ls /home'

   ansible 192.168.10.10 -m user -a 'name=yrz state=absent remove=yes' -b (删除用户)

   12.group (管理用户组)
   ansible-doc -s group
   ansible 192.168.10.10 -m group -a 'name=yrz system=yes gid=2222' -b (创建用户组)

   ansible 192.168.10.10 -a 'getent group yrz' (检查是否存在)

   ansible 192.168.10.10 -m group -a 'name=yrz state=absent' -b (删除用户组)
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值