IIS-node instellen

Een IIS-node instellen en een eenvoudige ASP.NET-website uitrollen met Vagrant en Ansible.

Projects:

 c2platform/phx/ansible , Ansible Win-rol ( c2platform.wincore.win)


Overzicht

Deze handleiding beschrijft het maken van een IIS-node pxd-iis en het uitrollen van een voorbeeld ASP.NET-website uit een Git-repository  . De node wordt aangemaakt in de PHX Ansible-ontwikkelomgeving met Vagrant en Ansible.

Randvoorwaarden

Uitrol

Voer het volgende commando uit om de node pxd-iis aan te maken en te registreren. Dit duurt ongeveer 6 minuten:

vagrant up pxd-iis

Verificatie

Gebruik Remmina om verbinding te maken met de node en open de volgende URL: https://iis.c2platform.org

Je ziet een pagina met de titel “Hello World”. Dit bevestigt dat de ASP.NET-toepassing correct draait. Het toont ook dat IIS is geïnstalleerd en werkt, met zowel HTTP- als HTTPS-bindingen geconfigureerd.

Certificaten worden vertrouwd in deze ontwikkelomgeving omdat de C2-certificaten zijn geïmporteerd in de Windows-vertrouwensopslag.

Je kunt ook een bureaubladsnelkoppeling gebruiken om IIS Manager te openen en de example-website, inclusief de bindingen, te inspecteren. De onderstaande afbeelding toont de HTTP- en HTTPS-bindingen die door Ansible zijn aangemaakt.

Review

Dit gedeelte legt uit hoe de IIS-node is ingericht met Vagrant en Ansible.

Vagrant

De Vagrant-definitie voor de node wordt hieronder weergegeven.

 Vagrantfile.yml

302  - name: iis
303    short_description: IIS
304    description: IIS
305    box: win2022
306    ip-address: 192.168.61.17
307    memory: 2000
308    plays:
309      - mw/iis
310    labels:
311      - iis

Ansible Play

De playbook past de AD-rol en de Windows-rol toe (er bestaat nog geen specifieke IIS-rol). De Windows-rol is krachtig genoeg om een volledige IIS-server te configureren.

 plays/mw/iis.yml

---
- name: Internet Information Services (IIS)
  hosts: iis

  roles:
    - { role: c2platform.wincore.ad, tags: ["v0"]}
    - { role: c2platform.wincore.win, tags: ["windows", "setup"]}

Configuratie

Het hoofdconfiguratiebestand definieert de variabele win_resources. Deze variabele wordt door de Windows-rol gebruikt om IIS-functies te installeren, de toepassing naar de webroot te klonen, een certificaat in de lokale opslag te installeren, een toepassingsgroep en website met HTTPS-ondersteuning aan te maken en de juiste ACL’s in te stellen met de module win_acl.

 group_vars/iis/main.yml

---
win_resources:
  2_iis:
    - name: IIS Features
      type: win_feature
      resources:
        - name: Web-Server
        - name: Web-Mgmt-Tools
        - name: Web-Asp-Net45
        - name: Web-Net-Ext45
        - name: Web-ISAPI-Ext
        - name: Web-ISAPI-Filter
        - name: Web-Windows-Auth
        - name: Web-Basic-Auth
        - name: Web-Stat-Compression
    - name: Clone app  # TODO C2-1412
      module: win_command
      cmd: >-
        git clone
        https://github.com/AzureWorkshops/samples-simple-iis-website.git
        {{ px_apps_dir }}/example
      creates: "{{ px_apps_dir }}/example"
    - name: C:/ProgramData/c2-pxd-rproxy1.p12
      module: win_copy
      src: c2-pxd-rproxy1.p12
    - name: Import cert for iis.c2platform.org
      module: win_certificate_store
      path: C:/ProgramData/c2-pxd-rproxy1.p12
      key_storage: machine
      file_type: pkcs12
  3_example:
    - name: Example
      module: web_app_pool
      attributes:
        startMode: alwaysRunning
        processModel.identityType: SpecificUser
        processModel.userName: C2\svc-example
        processModel.password: "{{ px_ad_admin_password }}"
        processModel.loadUserProfile: true
        managedRuntimeVersion: v4.0
        managedPipelineMode: classic
    - name: Example
      module: website
      site_id: 2
      physical_path: "{{ px_apps_dir }}/example"
      application_pool: Example
      bindings:
        set:
          - hostname: iis.c2platform.org
            protocol: http
            port: 80
            ip: 192.168.61.17
          - hostname: iis.c2platform.org
            protocol: https
            port: 443
            ip: 192.168.61.17
            # use_sni: true
            # use_ccs: false
            certificate_hash: 21dcab6e744fe21836d2e62c992625d7574de2d3
            certificate_store_name: MY
    - name: Permissions app pool
      module: win_acl
      defaults:
        # user: IIS AppPool\Example
        user: C2\svc-example
        rights: modify
        type: allow
        state: present
        inherit: ContainerInherit, ObjectInherit
      resources:
        - path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
        - path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
    - name: Example
      module: iis_hsts
      max_age: 31536000
      include_sub_domains: true
      preload: true
      enabled: true
      redirect_http_to_https: false
    - name: Example
      module: iis_logfile
      log_target_w3c: File  # File ETW File,ETW

Het volgende bestand maakt handige bureaubladsnelkoppelingen, waaronder één naar IIS Manager en één naar de website die draait op iis.c2platform.org.

 group_vars/iis/dev.yml

---
win_resources:
  0_iis_dev:
    - name: Shortcuts
      type: win_shortcut
      resources:
        - name: IIS Manager
          dest: '%Public%\Desktop\Internet Information Services (IIS) Manager.lnk'
          src: '%windir%\system32\inetsrv\InetMgr.exe'
        - name: Default Website
          dest: '%Public%\Desktop\localhost.lnk'
          src: C:\Program Files\Mozilla Firefox\firefox.exe
          arguments: http://localhost -profile "C:\vagrant\tmp\firefox-profile"
        - name: IIS Example Application
          dest: '%Public%\Desktop\iis.c2platform.org.lnk'
          src: C:\Program Files\Mozilla Firefox\firefox.exe
          arguments: https://iis.c2platform.org -profile "C:\vagrant\tmp\firefox-profile"

Aanvullende informatie



Laatst gewijzigd 2026.07.06: hash update (f54ca12)