Skip to content

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