Ansible
6.70 python3.8
Roles
loop
- name: Create directories
hosts: all
tasks:
- name: Create multiple directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- /data/app
- /data/logs
- /data/tmp
sync
- name: Sync files to different destinations
ansible.posix.synchronize:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
loop:
- src: files/nginx.conf
dest: /etc/nginx/
- src: files/app.yml
dest: /opt/app/config/
- src: files/start.sh
dest: /usr/local/bin/
sync 排除指定文件
- name: upload
hosts: aidog_hosts
tasks:
- name: Sync files
ansible.posix.synchronize:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
rsync_opts:
- "--exclude=.git"
- "--exclude=logs/"
- "--exclude=*.log"
loop:
- src: /mnt/c/Users/wjn/yx/aidog-server/
dest: /home/juwei/aidog/
ansible
ansible --version 查看配置文件是否配置成功 - 运行shell
ansible all -i hosts.yml -m shell -a "ls /"
ansible all -i hosts.ini -m ping
从指定task 开始运行
ansible-playbook -i hosts.yml playbook.yml --start-at-task="Reload Profile"
配置文件
<!-- @include: ansible.cfg -->
hosts.ini
[all]
192.168.3.91 ansible_user=wjn
[all:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
ansible_sudo_pass='123456'
yum install sshpass
inventories
<!-- @include: hosts.yml -->
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
windows
被控端
目标和控制都开启 Enable-PSRemoting -Force
查看在 WinRM 服务上运行的当前监听器
winrm enumerate winrm/config/Listener
控制端
Test-WSMan ip
pip install pywinrm
ansible -i deploy/inventory.ini windows -m win_ping
[windows]
win1 ansible_host=192.168.3.52
[windows:vars]
ansible_connection=winrm
ansible_user=xx
ansible_password=xxx
ansible_port=5985
# 常用参数
ansible_winrm_transport=ntlm
ansible_winrm_server_cert_validation=ignore
- hosts: windows
tasks:
- name: test
win_ping:
- name: run command
win_command: ipconfig