본문 바로가기
인프라/앤서블(Ansible)

[ansible] ansible mssql loginame 리스트 조회

by IT맥구리나스 2023. 2. 20.

개요

- mssql에 로그인계정으로 등록된 계정중 sysadmin 권한을 가진 계정의 리스트를 조회한다.

 

세부내용

- ansible이 수행하는 로그인계정으로 실행하기위해 윈도우 인증을 사용하였다.

- 해당 플레이북이 실행되려면 mssql loginname에 ansible 접속 윈도우계정도 등록해야한다.

- ansible 2.5로 구동하기 때문에 별도의 모듈이 아닌 쉘명령어 win_command를 사용해야 한다.

- 윈도우 명령어 sqlcmd에서 윈도우 인증으로 접속하여 쿼리를 수행하려면 -E 옵션이 있어야 한다.

---
- name: print net user
  hosts: all
  gather_facts: no
  vars:
    ansible_connection: winrm
    ansible_port: 5985
    ansible_winrm_server_cert_validation: ignore
    ansible_winrm_scheme: http
    ansible_become: false

  tasks:
    - name: Execute SQL query
      win_command: sqlcmd -S "localhost" -d "master" -E -Q "SELECT sp.name AS LoginName, sp.is_disabled AS LoginDisabled, spsid.name AS RoleName FROM sys.server_principals AS sp LEFT JOIN sys.server_role_memb
ers AS srm ON sp.principal_id = srm.member_principal_id LEFT JOIN sys.server_principals AS spsid ON srm.role_principal_id = spsid.principal_id WHERE sp.type IN ('U', 'G', 'S') AND sp.is_disabled = 0 AND sp.na
me NOT LIKE '%%NT%%' ORDER BY sp.name;"

      register: result

    - name: Display query result
      debug:
        var: result.stdout_lines

단순희 mssql 로그인계정으로 조회를 하려면 아래와 같다.

test // "{{ mssqlpass }}" <-- 이건 변수처리한거니 이자리에 패스워드 넣으면 됨

---
- name: print net user
  hosts: all
  vars:
    ansible_connection: winrm
    ansible_port: 5985
    ansible_winrm_server_cert_validation: ignore
    ansible_winrm_scheme: http
    ansible_winrm_transport: basic
    ansible_become: false

  tasks:
    - name: Execute SQL query
      win_command: sqlcmd -S localhost -d master -U test -P "{{ mssqlpass }}" -Q "SELECT SUBSTRING(sp.name, CHARINDEX('\', sp.name) + 1, LEN(sp.name)) AS name_without_hostname FROM sys.server_principals AS sp LEFT JOIN sys.server_role_members AS srm ON sp.principal_id = srm.member_principal_id LEFT JOIN sys.server_principals AS spsid ON srm.role_principal_id = spsid.principal_id WHERE sp.type IN ('U', 'G', 'S') AND sp.is_disabled = 0 AND sp.name NOT LIKE '%%NT %%' and sp.name NOT LIKE '%Users%' ORDER BY name_without_hostname;"
      register: result

    - name: Display query result
      debug:
        msg: "{{ inventory_hostname }} {{ result.stdout_lines }}"

 

 

앤서블 mssql 계정 조회

ansible mssql loginname list

앤서블 mssql 계정 리스트

반응형

댓글